私は zend フレームワークの初心者です。Zend で簡単なユーザー登録アプリケーションを開発しています。アプリケーションに追加機能と編集機能の両方があります。アプリケーションを使用して、新しいユーザーを完全に追加できます。しかし、パスワード以外のユーザー情報を編集しようとすると、パスワードおよび passwordConfirmation フィールドに使用されるバリデーターでエラーが発生します。パスワード以外のユーザー情報を編集する場合にのみ、パスワードおよび passwordConfirmation フィールドのバリデーターを削除または無効にする必要があります。
私のフォーム:
$password = new Zend_Form_Element_Password('password');
$password->setRequired(true)
->addFilter('StringTrim')
->addFilter('StripTags')
->addValidator('NotEmpty', false, array('messages'=>'password cannot be empty'))
->addValidator('StringLength', false, array(2, 20, 'messages'=>'password must be 2-20 character'))
->setLabel('Password:');
$this->addElement($password);
$confirmPassword = new Zend_Form_Element_Password('confirmPassword');
$confirmPassword->setRequired(true)
->addFilter('StringTrim')
->addFilter('StripTags')
->addValidator('NotEmpty', false, array('messages'=>'password do not match'))
->addValidator(new Application_Validate_PasswordConfirmation())
->setLabel('Retype password');
私のバリデータークラス:
class Application_Validate_PasswordConfirmation extends Zend_Validate_Abstract
{
const NOT_MATCH = 'notMatch';
protected $_messageTemplates = array(
self::NOT_MATCH => 'Password confirmation does not match'
);
public function isValid($value, $context = null)
{
$value = (string) $value;
$this->_setValue($value);
if (is_array($context)) {
if (isset($context['password']) && ($value == $context['password']))
{
return true;
}
} elseif (is_string($context) && ($value == $context)) {
return true;
}
$this->_error(self::NOT_MATCH);
return false;
}
}