Zend validate identical sur deux champs password
Bonjour à tous,
Vu le nombre de sujets que j'ai trouvé concernant ce validator, je commence à me demander si il est bien codé.... Ou alors c'est moi qui ne comprend pas cette class...
Comme indiqué dans le titre du sujet, je recherche à valider 2 champs password. J'ai essayé plein de sources différentes mais en vain >.>
La création du formulaire s'effectue dans l'un de mes controllers, la déclaration des champs se fait dans une class et différents paramètres comme le label ou les décorateurs intervient dans le fichier .phtml correspondant.
Voici mes codes :
Controller :
Code:
1 2 3 4 5
| $form = new Core_Form_CreateUser();
$form->setAction('')
->setMethod('post')
->setAttrib('id', 'createUser');
$this->view->form = $form; |
Class des champs :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| $passwordIdentical = new Zend_Validate_Identical($password1);
$passwordIdentical->setMessage('form_createUser_validator_password_identical');
$password1 = $this->addElement(new Zend_Form_Element_Password('password1'))->getElement('password1')
->setRequired(true)
->setDescription('*')
->addFilters($filters)
->addValidator($notEmpty, true)
->addValidator($lenghtPassword, true);
$password2 = $this->addElement(new Zend_Form_Element_Password('password2'))->getElement('password2')
->setRequired(true)
->setDescription('*')
->addFilters($filters)
->addValidator($notEmpty, true)
->addValidator($passwordIdentical, false)
->addValidator($lenghtPassword, true); |
A chaque validation de mon form, même avec des valeurs simples comme 123456789, le formulaire émet une erreur.
Ceci est le dernier code que j'ai testé :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| $password1 = $this->createElement('password', 'password1');
$password1->setLabel('Mot de passe')
->addFilter('StripTags')
->addFilter('StringTrim');
$this->addElement($password1);
$password2 = $this->createElement('password', 'password2');
$password2->setLabel('Confirmer mot de passe')
->addFilter('StripTags')
->addFilter('StringTrim')
->setRequired(true)
->addValidator('identical', true, array('token' => 'password1'));
$this->addElement($password2); |
Le hic, c'est le paramètre token passé à addValidator sur $password2, devrait correspondre au champ $password1, mais lors de la validation, il prend pour valeur de comparaison le string 'password1'. Si par exemple, je met $password1 dans la paramètre token, il va faire la comparaison avec l'objet $password1 soit tout un ensemble de balise html + label + input.
Donc pourrait on me dire ce qu'il cloche ? Surtout que le second code a été pris sur ce forum et il est apparemment fonctionnel. Mais ce n'est pas le cas chez moi. Origine du dernier code : http://www.developpez.net/forums/d11...ication-passe/
Merci d'avance :)