Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'ai un champ 'username' dans un formulaire, en faisant une mise à jour, il est possible de le modifier.
Alors l'idée, c'est de faire un champ hidden 'username_old' avec la valeur initial pour la comparer avec le champ ‘username’, et faire des modifications si il y a changement.
C'est mieux que d'interroger la base, car elle est assez compliquer et il faut plusieurs requêtes.
$user = new Form_EText('user_username', 'User'); $user_old = new Zend_Form_Element_Hidden('user_username'); ------> il contient la meme chose que $user $this->addElements(array($id,$user_old,$user,$submit));
Form_EText est un helper que je me suis fais car la validation d'un camp texte est presque toujours pareille.
Maintenant dans une classe métier je fais :
//on prend le nom et le nom caché $username = $form['user_username']; $username_old = $form['user_old']; // ------> ne marche pas //si différent au champs caché if ($username != $username_old) { etc ...
La réponse de Zend est :
Notice: Undefined index: user_old in C:\wamp\www\appli\application\models\DbTable\Item.php on line 110
Je m'y attendais,
De plus je ne pense pas qu'il faut donner le même nom
$username = $form['user_username']; $username_old = $form['user_username']; // ------> confusion
Maintenant la question est : Que dois-je faire pour garder l'ancienne valeur et la consulter quand je veux ?
Dernière modification par maryooman (13-04-2010 10:40:53)
Hors ligne
J'ai trouvé en regardant les méthode des classe Zend_Form_Element (merci l'auto-complétion^^)
$user = new Form_EText('user_username', 'Username'); $user_old = new Zend_Form_Element_Hidden('user_old'); $user_old->setValue($user->getValue());
voilà !!
Dernière modification par maryooman (13-04-2010 11:33:24)
Hors ligne
Salut,
merci de mettre [Résolu] dans le sujet de ton post :A LIRE POUR TOUS!!!!! les sujets résolus
Hors ligne
Bonjour,
en fait cela ne fonctionne pas, j'ai pris du temps à m'en rendre compte comme j'étais sur autre chose.
array(16) { ["item_id"] => string(2) "10" ["user_old"] => string(0) "" ["user_username"] => string(6) "test" etc ... }
comme vous le constater le champs user_old est vide !
alors $user_old->setValue($user->getValue()); ne fonctionne pas.
Me revoilà au même point de départ!
EDIT: pour être précis c'est $user->getValue() qui ne fonctionn pas, si je le remplace par une chaine de caratères c'est ok
EDIT2 : j'ai contourner le problème en demandant à la base, c'est un acceès inutile puisque l'info je l'ai mais je n'arrive pas à m'en servire...
Dernière modification par maryooman (26-04-2010 10:26:15)
Hors ligne
Pages: 1