1

我在 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的错误消息,即notSamemissignToken,但表单仍然显示默认错误消息,即“两个给定的令牌不匹配”

谁能帮帮我吗。

提前致谢...

4

1 回答 1

3

如果您将参数传递给验证器对象(您通过传递来执行此操作),则该$options参数将被完全忽略。Zend_Form_Element::addValidatornew 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.'
          )
    )
);
于 2011-11-19T05:09:10.133 回答