私はこれに1時間苦労してきましたが、何が問題なのかまだ理解できません。
2 つのフィールドを設定する方法は次のとおりです。
$password = $this->createElement('password', 'password');
$password->setLabel('Password');
$password->setRequired('true');
$password->addValidator(new Zend_Validate_Regex('/^([a-zA-Z0-9]*[0-9]+[a-z]*[A-Z]+[a-zA-Z0-9]*)|([a-zA-Z0-9]*[A-Z]+[a-z]*[0-9]+[a-zA-Z0-9]*)$/'));
$password->setAttrib('size', 25);
$password->setAttrib('length', 150);
$this->addElement($password);
$confirm_password = $this->createElement('password', 'confirm_password');
$confirm_password->setLabel('Confirm');
$confirm_password->setRequired('true');
$confirm_password->setAttrib('size', 25);
$confirm_password->setAttrib('length', 150);
$confirm_password->addValidator('Identical', false, array('token' => 'password'));
//$confirm_password->addValidator(new Zend_Validate_Identical(array('token' => 'password')));
$this->addElement($confirm_password);
両方のバリデーター (+ コメントされたもの) を試しましたが、どれも機能しません。これらの宣言は、www.wjgilmore.com /blog/entry/validating_identical_passwords_with_the_zend_frameworkおよびhttps://stackoverflow.com/a/3653416/1300454からのものです。
両方の宣言は常に「指定された 2 つのトークンが一致しません」を返しますが、これら 2 つのフィールドにはまったく同じ文字列が含まれていると確信しています。
推測はありますか?ありがとうございました!
EDIT : XDebug のおかげで、Zend_Validate_Identical
'sisValid()
関数が呼び出されたときに、 $token
'password' に$value
等しいのに対し、'P4ssword' に等しいことに気付きました (confirm_password フィールドに入力したパスワード。何が起こっているのでしょうか?
EDIT2 : emanaton.com/code/php/validateidenticalfield と stackoverflow.com/a/1628611/1300454 の 2 つのソリューションを試してみましたが、どちらもうまくいきません。一般的な IdenticalField バリデーターでは、「パスワード」フィールドが見つからず、2 番目のバリデーターは 2 つのフィールドが一致しないことを返すだけであり、XDebug を使用すると、パスワード「P4ssword」を単語と一致させようとしていることがわかりました。フィールド名として付けた「パスワード」...