【问题标题】:Custom meaningful error message for Zend RegEx ValidatorZend RegEx Validator 的自定义有意义的错误消息
【发布时间】:2010-03-15 21:47:10
【问题描述】:

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

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

非常感谢您的意见。

【问题讨论】:

    标签: php regex zend-framework zend-form


    【解决方案1】:

    对于 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 。

    祝你好运验证:)。

    【讨论】:

      【解决方案2】:

      用通俗的话告诉用户你的限制是什么?喜欢

      Error: Only the letters A to Z and numbers are allowed.
      

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

      【讨论】:

      • 嗨,这只是一个例子......可以是任何字段(不一定是名字),但这是我面临的问题的一个例子......
      • 我相信他问的是如何设置消息,而不是设置什么消息。
      • @Marcus Downing:我不这么认为。她已经知道如何设置消息(请参阅她的示例代码),并且她想了解如何生成针对用户输入“量身定制”的消息。我建议不要这样做。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-13
      相关资源
      最近更新 更多