ZF 1.11.3 ici.Confirmer le même mot de passe avec Zend_Filter_Input
$validators = array(
'pass1' => array('presence' => 'required'),
'pass2' => array(array('Identical', true, 'token' => 'pass1'))
),
$input = new Zend_Filter_Input(array(), $validators, $this->_request->getParams());
if (!$input->isValid()) {
var_dump($input->getMessages());
}
En utilisant le code ci-dessus, je suis (FirePHP formaté, en fait):
['pass2'] =>
array(
['notSame'] => 'The two given tokens do not match'
)
Comme vous l'avez peut supposer, cette erreur apparaît même si "pass1" et "pass2" contiennent les même chaîne (il s'agit essentiellement d'un formulaire de confirmation de mot de passe).
Je ne peux pas utiliser Zend_Form ou addValidator() (ne demandez pas), donc je dois jongler avec cette syntaxe, ce qui explique pourquoi je pense cela ne fonctionne pas. Je fais référence à array(array('Identical', true, 'token' => 'pass1'))
. J'ai même essayé array(array('Identical', true, array('token' => 'pass1')))
, obtenant la même erreur. Je ne semble pas comprendre où ces tableaux doivent être placés.
Suggestions, corrections ou "halp!".
Je ne sais pas où vous avez obtenu cet exemple de, mais je regarde le manuel en ce moment [et il est pas là] (http://framework.zend.com/manual /fr/zend.validate.set.html). I ** peut ** utiliser Zend_Validate_ *; Je n'ai pas dit que je ne pouvais pas. Je ne peux pas utiliser la syntaxe [(plus facile) de addValidator()] (http://www.wjgilmore.com/blog/entry/validating_identical_passwords_with_the_zend_framework). J'ai déjà utilisé Zend_Filter_Input, mais pas celui de "Identique". – nevvermind
Ok, j'ai joué un peu dans la source de ZF et il semble que ça valide ma valeur d'entrée "pass2" (disons "xxx") ** à "pass1" **, pas ** la valeur de ** "pass1" . Si je tape "pass1" à l'entrée de texte "pass2", cela fonctionne. Comment ZF sait-il exactement que la valeur du jeton est un nom d'entrée et non une valeur réelle? Le code est dans Zend_Validate_Identical :: isValid(). – nevvermind