与Zend_Validate相同的奇怪问题?

时间:2011-11-19 04:42:37

标签: zend-form zend-validate zend-framework

我在Zend表单中编写了以下代码:

    $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 个答案:

答案 0 :(得分:3)

$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.' ) ) ); 传递它)。

相反,您希望更接近添加其他验证器的方式:

{{1}}