当前位置:  开发笔记 > 编程语言 > 正文

Zend_Form - >很好地改变setRequired()验证消息

如何解决《Zend_Form->很好地改变setRequired()验证消息》经验,为你挑选了5个好方法。

假设我创建了一个这样的文本元素:

$firstName = new Zend_Form_Element_Text('firstName');
$firstName->setRequired(true);

什么是更改默认错误消息的最佳方法:

值为空,但需要非空值

自定义消息?我读到了替换消息的地方,只需使用addValidator(...,而不是setRequired),如下所示:

$firstName = new Zend_Form_Element_Text('firstName');
$firstName->addValidator('NotEmpty', false, array('messages'=>'Cannot be empty'));

但在我的测试中,这不起作用 - 它根本不验证 - 它将传递一个空文本字段.同时使用两者(addValidator('NotEmp .. + setRequired(true))也不起作用 - 它会双重验证,给出两条错误消息.

有任何想法吗?

谢谢!



1> 小智..:

设置此"站点范围"的更简单方法是在引导程序或基本zend_controller中执行以下操作:

 'Value must be entered',
                        Zend_Validate_Regex::NOT_MATCH => 'Invalid value entered',
                        Zend_Validate_StringLength::TOO_SHORT => 'Value cannot be less than %min% characters',
                        Zend_Validate_StringLength::TOO_LONG => 'Value cannot be longer than %max% characters',
                        Zend_Validate_EmailAddress::INVALID => 'Invalid e-mail address'
                    );
    $translator = new Zend_Translate('array', $translateValidators);
    Zend_Validate_Abstract::setDefaultTranslator($translator);
?>



2> typeoneerror..:

试一试:

$firstName = new Zend_Form_Element_Text('firstName');
$firstName->setLabel('First Name')
          ->setRequired(true)
          ->addValidator('NotEmpty', true)
          ->addErrorMessage('Value is empty, but a non-empty value is required.');

关键是验证器上的"true",如果你将其设置为true,它将杀死其后的其他验证.如果添加多个验证方法,但将其设置为false,则将验证所有方法.



3> 小智..:

Zend_Form将所需的验证错误设置为'isEmpty',因此您可以使用setErrorMessages()覆盖其消息.例如:

//Your Required Element
$element->setRequired(true)->setErrorMessages(array(
'isEmpty'=>'Please fill this field'
));

它对我有用,使用ZF 1.11



4> typeoneerror..:

尝试

->addValidator('Digits', false);

要么

->addValidator('Digits');

你假设要检查数字,它必须有一个字符串长度.

此外,我喜欢这样做一些自定义错误消息:

$firstName->getValidator('NotEmpty')->setMessage('Please enter your first name');

这允许您"获取"验证器,然后"设置"它的属性.


值得一提的一个怪癖......即使setRequired(true)应该在幕后使用NotEmpty类,如果单独使用setRequired()而不使用setValidator('NotEmpty ... For',则不能使用getValidator('NotEmpty')对上帝的爱,多么奇怪的界面

5> 小智..:

请尝试以下方法.

$subjectElement->setRequired(true)->addErrorMessage('Please enter a subject for your message');

这对我有用.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有