我正在验证表单中的文本字段,如下所示:
$name = new Zend_Form_Element_Text('name');
$name->setLabel('First Name:')
->setRequired(true)
->addFilter(new Zend_Filter_StringTrim())
->addValidator('regex',true,array('/^[(a-zA-Z0-9)]+$/'))
->addErrorMessage('Please enter a valid first name');
我想要完成的是 - 如何显示有意义的错误消息? 例如:如果名字是'XYZ-',我怎么能显示' - 在名字中不允许。'
有没有办法可以访问正则表达式失败的角色? 你会推荐别的东西吗?
我考虑过编写一个自定义验证器,但正则表达式非常简单,所以我没有看到这一点。 我无法在任何地方为zend'regex'验证器找到合适的文档。
如果我没有覆盖默认错误消息,我会简单地得到类似的内容: ';;; hhbhbhb'与模式'/ ^ [(a-zA-Z0-9)] + $ /'不匹配 - 我显然不希望向用户显示。
我很感激您的意见。
答案 0 :(得分:16)
对于zend标准验证器中的自定义错误消息,只需在实例化时将messages
数组传递给验证器。它是一个数组,哪些键是错误类型(参见更多),以及值 - 错误消息。
->addValidator('regex', true,
array(
'pattern'=>'/^[(a-zA-Z0-9)]+$/',
'messages'=>array(
'regexNotMatch'=>'Your own custom error message'
)
)
)
要查看所选验证器的其他错误类型的错误键,您可以参考它的源代码。
对于regex
验证器,它位于{Zend Framework Library} /Zend/Validate/Regex.php。
祝你好运验证:)。
答案 1 :(得分:1)
如何以外行的方式告诉用户你的限制是什么?像
Error: Only the letters A to Z and numbers are allowed.
(这让我想到为什么名字可以包含数字......)