Zend RegEx Validator的自定义有意义的错误消息

时间:2010-03-15 21:47:11

标签: php regex zend-framework zend-form

我正在验证表单中的文本字段,如下所示:

 $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)] + $ /'不匹配 - 我显然不希望向用户显示。

我很感激您的意见。

2 个答案:

答案 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.

(这让我想到为什么名字可以包含数字......)