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']; // ------> confusionMaintenant 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