我创建了一个 zend 表单,我在其中输入了密码并确认密码。我使用相同的表单来添加和更新/编辑数据库。当我想添加新密码时,我的代码工作正常,但当我想编辑已经存在的密码时,我的代码不起作用。
我的表格:
$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(5, 25, 'messages'=>'password must be 5-30 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 don\'t match'))
->addValidator(new School_Validate_PasswordConfirmation())
->setLabel('Confirm Password');
$this->addElement($confirmPassword);
我的 School_Validate_PasswordConfirmation 类:
class School_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;
}
}
当我想编辑密码以外的其他字段时,它会给出以下错误消息。但是只有当我第一次输入用户时才会显示此消息。
错误:
password cannot be empty
password don't match
提前致谢。