有没有办法用装饰器做到这一点,还是我需要深入挖掘ZF?
答案 0 :(得分:3)
如果您有多个验证程序附加到一个表单元素并且只想弹出第一条错误消息,则可以为每个验证程序将breakChainOnFailure
选项设置为TRUE。在这种情况下,如果其中一个验证器失败,则跳过所有后续验证器。
$element->addValidator(
new Zend_Validate_StringLength(array('min' => 6, 'max' => 12)),
true)
->addValidator(new Zend_Validate_Alnum());
答案 1 :(得分:0)
有很多方法可以做到这一点。我个人最喜欢的是扩展您想要使用的验证器,只返回一个自定义消息。对于电子邮件验证程序,这特别有用,因为它显示了一些您可能不想显示的疯狂错误消息。您可以在此处查看此方法:http://clintberry.com/2010/07/zend-form-email-validator-customizing-error-messages/
答案 2 :(得分:0)
如果$ foo在Zend_Form的实例中,那么此表单中有一个表单元素用户名
$foo->username->getMessages() ;
将返回错误数组消息,只显示您只需要执行array_pop($foo->username->getMessages());
的操作。基本上,zend装饰器使用错误视图助手来显示消息。您需要扩展默认装饰器并仅通过echo