2011-07-29 7 views
3

zendフレームワークのバリデーターに問題があります。私は2つの要素(パスワードと確認パスワード)を持っていて、それらが同一であることを確認したい。しかし、同じバリデーターは私のためには機能しません。トークンは常に一致しません:Zendフレームワークの同一バリデーターが機能しない

class Form_MemberRegisterationForm extends Zend_Form 
{ 
    public function init() 
    {     
      $password = $this->createElement('password', 'password1'); 
     $password->setLabel('Password:'); 
     $password->setRequired(TRUE); 
     $password->setAttrib('size', 30); 
     $password->setErrorMessages(array ("isEmpty" => "Invalid Password!")); 
     $this->addElement($password); 
     //  
     $confirmPswd = $this->createElement('password', 
      'confirmPassword'); 
     $confirmPswd->setLabel('Verify password:'); 
     $confirmPswd->setAttrib('size', 30); 
     $confirmPswd->addValidator('identical', false, 
      array ('token' => 'password1')); 

     $this->addElement($confirmPswd); 

私は間違っていますか?

答えて

4

Zend Frameworkのバージョンが1.10.5を超えている場合、コードは正しくです。

public function isValid($data) 
{ 
    $this->getElement('passwordConfirm')->addValidator('identical', false, 
     array('token' => $data['password']) 
    ); 
    return parent::isValid($data); 
} 
+0

エラーメッセージ:一致するトークンがありません –

+0

申し訳ありません。修正コードを確認してください。 – Alex

+0

正常に動作します。ありがとうございました。 –

0

//password 
$this->addElement('password', 'password', array('label' => 'Password', 'required' => true)); 

//password_confirm 
$this->addElement('password', 'password_confirm', array('label' => 'Password Confirm', 'required' => true)); 
$this->password_confirm->addValidator('Identical', false, array('token' => 'password')); 

P.S.この方法を試してみてくださいisValidコントローラのフォームでうまく動作するように制御します。そうしないと、エラーメッセージは表示されません。 ;)

+0

:トークンが一致していません。 –

1

のコード例は正しいですが、あなたのZend Frameworkのバージョンは1.10.5を超えている場合にのみ機能だったときにある動作します:

earlerバージョンについては、オーバーライドisValidメソッドでバリデータを追加しようトークンパラメータを使用して他のフォーム要素を参照できるようになりました。

あなたのZFバージョンが1.10.5未満だと思いますか?

ZFの最新バージョンを使用すると、isValidメソッドのオーバーライドについて心配する必要がなくなり、コードをわかりやすくすることができます。ここでZFの開発者の1から

説明:それは言う

http://zfuniversity.com/tag/zend_validate_identical/

関連する問題