php – 从Zend表单元素中清除验证错误消息

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 从Zend表单元素中清除验证错误消息脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个用于捕获邮件地址的表单元素.我在元素上使用Zend_Validate_EmailAddress,它会生成不是非常用户友好的错误消息.

我的第一步是指定更加用户友好的新消息,但有些检查根本不适合用户友好的消息.然后我尝试在表单上运行isValid()之后简单地清除这些消息并指定我自己的消息,但是我找到的所有函数都不会清除消息.

我尝试了什么和结果

> setErrorMessages() – 这里设置的值似乎完全被忽略
> clearErrorMessages() – 似乎被忽略了
> setErrors() – 添加我的消息,但保留其他消息

这是在我的自定义视图脚本中显示错误代码

<?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在哪里找到它,就可以放在任何地方.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 从Zend表单元素中清除验证错误消息全部内容,希望文章能够帮你解决php – 从Zend表单元素中清除验证错误消息所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。