2010-03-15 84 views
6

自定义错误消息有意义,我在我的表单验证文本字段,如下所示:为Zend的正则表达式验证

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

我很感激你的意见。

回答

1

如何通过非专业人士的方式告诉用户您的限制是什么?像

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

(这使我为何第一名称可以包含数字的问题...)

+0

嗨,这只是一个例子......可以是任何领域(不一定是名字),但是是我面对多数民众赞成的问题的一个例子.. – 2010-03-16 15:19:16

+1

我相信他问*如何*设置消息,不是要设置什么信息。 – 2010-07-19 14:44:07

+0

@马库斯唐宁:我不这么认为。她已经知道如何设置一条消息(请参阅她的示例代码),并且她想知道如何生成针对用户输入“定制”的消息。我建议反对。 – 2010-07-19 14:56:42

15

对于Zend的非标准验证您的自定义错误消息(S)的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。

祝你好运在验证:)。