密码确认密码匹配不起作用

时间:2013-03-19 07:08:04

标签: zend-framework

以下代码段不会提示“密码不匹配”消息。

$password = new Zend_Form_Element_Password('password');
$password->setDecorators($elementDecoration);
$password->setLabel('Password')
    ->addFilter('StripTags')
    ->addFilter('StringTrim');

/ *密码确认 - 只需将令牌部分设置为密码字段名称* /

$confirmPswd = new Zend_Form_Element_Password('conf_password');
$confirmPswd->setDecorators($elementDecoration);
$confirmPswd->setLabel('Confirm Password:');
$confirmPswd->setLabel('Confirm Password:');
$confirmPswd->setAttrib('size', 35);
$confirmPswd->setRequired(true);
$confirmPswd->addValidator('Identical', false, array('token' => 'password'));
$confirmPswd->addErrorMessage('The passwords do not match');

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我在电子邮件地址上使用相同的验证器。要将其添加到表单,我使用以下代码:

$this->addElement('text', 'confirm_email',
            array(
                'label'=>'Confirm Email Address',
                'required'=>true,
                'filters'=>array('StringTrim'),
                'validators'=>array(array('EmailAddress'),
                                    array('NotEmpty', true, array('messages'=>'Confirm email address is required.')),
                                    array('Identical', false, array('token'=>'email', 'messages'=>'The email addresses provided do not match.'))),

        'class'=>'thirdCol'));

我使用flash messenger显示错误

foreach ($form->getErrors() as $error) {
                $this->flashMessenger->addMessage($error);
            }

如果您在提交表单时尝试获取javascript警报,我认为您必须自己编写代码。在您的表单中,使用类似

的内容
$this->setAttrib('onsubmit', 'return checkRegistration();');

并且checkRegistration函数是对某些控制器/操作的ajax调用,该控制器/操作返回要警告的错误。如果你想返回json或类似的东西

$this->getHelper('layout')->disableLayout();
$this->_helper->viewRenderer->setNoRender(true); 

将禁用布局和视图,以便返回所有返回的内容。

希望这有帮助。