Я сейчас борюсь с этим в течение часа и до сих пор не могу понять, что не так.
Вот как я установил мои два поля:Zend_Form: идентичные поля возвращают false, когда на самом деле идентичны
$password = $this->createElement('password', 'password');
$password->setLabel('Password');
$password->setRequired('true');
$password->addValidator(new Zend_Validate_Regex('/^([a-zA-Z0-9]*[0-9]+[a-z]*[A-Z]+[a-zA-Z0-9]*)|([a-zA-Z0-9]*[A-Z]+[a-z]*[0-9]+[a-zA-Z0-9]*)$/'));
$password->setAttrib('size', 25);
$password->setAttrib('length', 150);
$this->addElement($password);
$confirm_password = $this->createElement('password', 'confirm_password');
$confirm_password->setLabel('Confirm');
$confirm_password->setRequired('true');
$confirm_password->setAttrib('size', 25);
$confirm_password->setAttrib('length', 150);
$confirm_password->addValidator('Identical', false, array('token' => 'password'));
//$confirm_password->addValidator(new Zend_Validate_Identical(array('token' => 'password')));
$this->addElement($confirm_password);
Я пробовал оба валидатор (+ один комментарий), но ни один не работает. Эти заявления происходят из www.wjgilmore.com/blog/entry/validating_identical_passwords_with_the_zend_framework и https://stackoverflow.com/a/3653416/1300454
Оба заявления всегда возвращаются «Две данные лексемы не совпадают» eventho Я уверен, что эти два поля содержат ту же самую строку.
Любое предположение? Спасибо!
EDIT: только замеченные благодаря XDebug, что при Zend_Validate_Identical
«isValid()
функции s называется, мой $token
равен„пароль“в то время как мой $value
приравнивает„P4ssword“(пароль я вошел в моем confirm_password поля Что происходит. ?
EDIT2: пытались с этими двумя решениями: emanaton.com/code/php/validateidenticalfield и stackoverflow.com/a/1628611/1300454, но ни один из них не работает для меня либо с родовым IdenticalField валидатор он не может найти свое поле «пароль», а второй валидатор просто возвращает это. два поля не совпадают и с XDebug снова я выяснил, что он по-прежнему ищет мой пароль «P4ssword» на слово «пароль», которое я дал в качестве имени поля ...
Есть ли способ, которым я мог точно сказать, какую версию я использую? –
$ context содержит: ('controller' => 'user', 'action' => 'dovalidation', 'module' => 'default', 'confirm_password' => 'P4ssword') –
btw, я использую ZF v1.11.3 –