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のエラー メッセージをオーバーライドしましたが、それでもフォームにはデフォルトのエラー メッセージ、つまり「指定された 2 つのトークンが一致しません」が表示されています。

誰でも私を助けてください。

前もって感謝します...

4

1 に答える 1

3

$optionsパラメータ toは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.'
          )
    )
);
于 2011-11-19T05:09:10.133 に答える