php – 从Zend表单元素中清除验证错误消息
我有一个用于捕获电子邮件地址的表单元素.我在元素上使用Zend_Validate_EmailAddress,它会生成不是非常用户友好的错误消息.
我的第一步是指定更加用户友好的新消息,但有些检查根本不适合用户友好的消息.然后我尝试在表单上运行isValid()之后简单地清除这些消息并指定我自己的消息,但是我找到的所有函数都不会清除消息. 我尝试了什么和结果 > setErrorMessages() – 这里设置的值似乎完全被忽略 这是在我的自定义视图脚本中显示错误的代码: <?php if ($this->element->hasErrors()): ?> <?php echo $this->formErrors($this->element->getMessages()); ?> <?php endif; ?> 我的解决方案 我正在给Gordon答案,因为他的解决方案是最完整的,但我最终在元素like this上使用了addErrorMessage()函数: $element->addValidator('EmailAddress',false,$this->_validate['EmailAddress']) ->addErrorMessage("'%value%' is not a valid email address"); $element->addValidator('Date',array('MM/dd/yyyy')) ->addErrorMessage("Date must be in MM/DD/YYYY format"); 解决方法
从参考指南(强调我的):
所以你可以这样做: $form = new Zend_Form; $username = new Zend_Form_Element_Text('username'); $username->addValidator('regex',array( '/^[a-z]/i','messages' => array( 'regexInvalid' => 'foo','regexNotMatch' => 'bar','regexErrorous' => 'baz' ) )); $form->addElement($username); $form->isValid(array('username' => '!foo')); 然后将为错误消息呈现“bar”,因为正则表达式不匹配,因为它不会以a-Z中的字母开头. 这相当于使用: $username->setErrorMessages( array( 'regexNotMatch' => 'The value %value% must start with a-Z',… ) ); 我使用了不同的模式来说明如何在模式中使用经过验证的值. 如果要删除任何默认模板,也可以使用setErrors,例如 $username->setErrors(array('The value must start with a-Z')); 无论您做什么,都必须在使用isValid进行验证之前进行配置.运行验证后,Zend_Form_Element将包含默认错误消息.我不知道有什么方法可以重置那个(虽然有人可能想要纠正我). 进一步引用参考指南:
可以从文件中自定义所有验证消息 > http://framework.zend.com/svn/framework/standard/trunk/resources/languages/en 该文件应该在APPLICATION_PATH / resources / languages中,但只要你告诉Zend_Translate在哪里找到它,就可以放在任何地方. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |