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

Mal*_*yer 7 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');
Run Code Online (Sandbox Code Playgroud)

我想要完成的是 - 如何显示有意义的错误消息?例如:如果名字是'XYZ-',我怎么能显示' - 名字中不允许'.

有没有办法可以访问正则表达式失败的角色?你会推荐别的东西吗?

我想过编写一个自定义验证器,但正则表达式很简单,所以我没有看到这一点.我无法在任何地方为zend'正则表达式'验证器找到合适的文档.

如果我没有覆盖默认错误消息,我简单地得到类似:';;;; hhbhbhb'与模式'/ ^ [(a-zA-Z0-9)] + $ /'不匹配 - 我显然不想显示给用户.

我很感激你的意见.

Bas*_*ler 16

对于zend标准验证器中的自定义错误消息,只需messages在实例化时将数组传递给验证器.它是一个数组,哪些键是错误类型(参见更多),以及值 - 错误消息.

->addValidator('regex', true, 
                       array(
                           'pattern'=>'/^[(a-zA-Z0-9)]+$/', 
                           'messages'=>array(
                               'regexNotMatch'=>'Your own custom error message'
                           )
                       )
)
Run Code Online (Sandbox Code Playgroud)

要查看所选验证器的其他错误类型的错误键,您可以参考它的源代码.对于regex验证器,它位于{Zend Framework Library} /Zend/Validate/Regex.php.

祝你好运 :)


Tim*_*ker 1

用外行的话告诉用户你的限制是什么怎么样?喜欢

Error: Only the letters A to Z and numbers are allowed.
Run Code Online (Sandbox Code Playgroud)

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