Yii Framework Forum: Enregistrer du code php venant d'un formulaire - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Enregistrer du code php venant d'un formulaire Comment transformer une string en array ? Rate Topic: -----

#1 User is offline   Clem 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 30
  • Joined: 15-November 10

Posted 20 March 2012 - 07:38 AM

Bonjour,

j'aimerai enregistrer un morceau de code php (un tableau) venant d'un formulaire, après l'avoir sérializé, dans la base de données.

Le problème n'est pas l'enregistrement et le sérialisation beforeSave, afterFind, mais le fait que les données reçues sont de type string:
string 'array('site/page', 'view' => 'contact')' (length=39)


Alors qu'il faudrait qu'elle soit interprétée comme du php pour pouvoir la sérializer et l'exploiter correctement par php.

Comment feriez-vous? Y a t-il une règle de validation adaptée dans le modèle ActiveRecord?

Merci d'avance, là je coince et ça ne doit pas être compliqué!
Clem
0

#2 User is offline   luc 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 211
  • Joined: 22-June 10
  • Location:france

Posted 20 March 2012 - 09:30 AM

Salut,
si je comprends bien, tu as un formulaire du genre: (Q: question, R: réponse saisie)
Q: controller/action => R: site/page
Q: paramètre => R: contact
Avec ce formulaire tu veux créer une chaîne à stocker dans la bdd sous forme de varchar:
array('site/page', 'view' => 'contact')

Je ne comprends pas trop ton histoire de serialisation de beforeSave et d'afterFind, cela me semble bien compliqué pour une opération simple de ce genre.
Hey Ho !
Let's go !
0

#3 User is offline   Clem 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 30
  • Joined: 15-November 10

Posted 20 March 2012 - 10:09 AM

Oui, je pourrais me débrouiller avec plusieurs champs, et remixer le tout dans le modèle, mais le but c'est d'avoir un seul champ dans lequel je tape directement le lien en code php, en gros pouvoir interpréter du code php venant d'un formulaire.

Recevoir par exemple le lien

$this->url = $_POST['url'];

Dans ce cas $this->url = 'array('site/page', 'view' => 'contact')'; Mais je voudrais que ça ait pour valeur $this->url = array('site/page', 'view' => 'contact');
Et ensuite l'utiliser comme:
CHtml::link($model->titre,$model->url);


J'ai essayé de bidouiller avec eval() mais ça n'a pas été concluant.
0

#4 User is offline   luc 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 211
  • Joined: 22-June 10
  • Location:france

Posted 20 March 2012 - 10:20 AM

utilises la fonction php substr pour virer tes '
Hey Ho !
Let's go !
0

#5 User is offline   seb7 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 49
  • Joined: 03-April 12

Posted 13 November 2012 - 07:54 AM

Salut,

L'eval c'est la bonne solution puisqu'au debut tu as une chaine de charactères.

Ceci marche.

$url_str =  "array('site/page', 'view' => 'contact')";
$url_array =  $this->evaluateExpression($url_str);
echo CHtml::link('Mon lien', $url_array);


$this peut être n'importe quoi, au du moins n'importe quoi qui herite de CComponent (donc tout dans yii si je me trompe pas).

un gist(c'est parceque je joue avec github).
0

#6 User is offline   Clem 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 30
  • Joined: 15-November 10

Posted 13 November 2012 - 08:45 AM

View Postseb7, on 13 November 2012 - 07:54 AM, said:



$url_str =  "array('site/page', 'view' => 'contact')";
$url_array =  $this->evaluateExpression($url_str);
echo CHtml::link('Mon lien', $url_array);




Merci! Je mets ça de côté pour quand j'en aurai besoin.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users