1

下面的代码段不会提醒“密码不匹配”消息。

$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');
4

2 回答 2

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); 

将禁用布局和视图,因此返回的所有内容都是您回显的内容。

希望这可以帮助。

于 2013-03-21T15:02:39.120 回答
0

检查以下 URL 以获取确认密码。

http://blog.justin.kelly.org.au/creating-a-simple-password-confirmation-field/

这对你很有帮助。

另请检查以下链接:

http://www.stoimen.com/blog/2011/11/23/how-to-setup-different-error-messages-for-each-zend-form-element-validator/

还要检查这个:

从控制器设置 Zend\Form 错误消息

于 2013-03-19T07:16:53.333 回答