Странная проблема с Zend_Validate_Identical? - PullRequest
1 голос
/ 19 ноября 2011

Я должен был написать следующий код в моей Zend Form:

    $newpassword = new Zend_Form_Element_Password('newpassword');
    $newpassword->setLabel("Enter your New Password :")
                ->setRequired(true)
                ->addFilter('StripTags')
                ->addFilter('StringTrim')
                ->addValidator(
                     'NotEmpty',
                      TRUE,
                      array('messages' => array(
                              'isEmpty' => 'Please enter new password.'
                                               )
                           )
                     )
               ->addValidator(
                    'Alnum',
                     TRUE,
                     array('messages' => array(
                                 'alnumInvalid' => 'Please enter a valid new password.',
                                 'notAlnum' => 'Please enter a valid new password.',
                                 'alnumStringEmpty' => 'Please enter a valid new password.'
                                              )
                          )
                          )
               ->addValidator('StringLength', false, array(4, 25))
               ->getValidator('StringLength')->setMessage("Should be 4-25 characters long.");


    $retypepassword = new Zend_Form_Element_Password('retypepassword');
    $retypepassword->setLabel("Retype-Password :")
                   ->setRequired(true)
                   ->addFilter('StripTags')
                   ->addFilter('StringTrim')
                   ->addValidator(
                        'NotEmpty',
                        TRUE,
                        array('messages' => array(
                                         'isEmpty' => 'Please enter confirm password.'
                                                 )
                             )
                       )
                    ->addValidator(
                         new Zend_Validate_Identical('newpassword'),
                         TRUE,
                         array('messages' => array(
 'notSame' => 'New password and confirm password are not matching. They must be same.',
 'missingToken' => 'New password and confirm password are not matching. They must be same.'
                                                  )
                                           )
                                  )
              ->addValidator('StringLength', false, array(4, 25))
              ->getValidator('StringLength')->setMessage("Should be 4-25 characters long.");

Как видите, я переопределил сообщения об ошибках для Zend_Validate_Identical , т. Е. Для notSame и missignToken , но по-прежнему в форме отображается сообщение об ошибке по умолчанию т.е. "Два данных токена не совпадают"

Может кто-нибудь, пожалуйста, помогите мне.

Заранее спасибо ...

1 Ответ

3 голосов
/ 19 ноября 2011

Параметр $options для Zend_Form_Element::addValidator полностью игнорируется, если вы передаете ему объект-валидатор (что вы делаете, передавая new Zend_Validate_Identical).

Вместо этого вы хотите сделать что-то ближе ккак вы добавили другие валидаторы:

$this->addValidator(
    'Identical',
    TRUE,
    array('token' => 'newpassword',
          'messages' => array(
              'notSame' => 'New password and confirm password are not matching. They must be same.',
              'missingToken' => 'New password and confirm password are not matching. They must be same.'
          )
    )
);
...