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 :
Class des champs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $form = new Core_Form_CreateUser(); $form->setAction('') ->setMethod('post') ->setAttrib('id', 'createUser'); $this->view->form = $form;
A chaque validation de mon form, même avec des valeurs simples comme 123456789, le formulaire émet une erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
Ceci est le dernier code que j'ai testé :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
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
Partager