2012-04-16 175 views
1

我有一些恼人的麻烦设置Zend_Validate_Regex自定义错误消息。Zend_Validate_Regex,无法设置自定义错误消息

我知道我在语法迷路所以任何帮助,将不胜感激我的元素声明:

$this->addElement('text', 'email', array(
    'label' => 'E-Mail', 
    'title' => 'email..', 
    'required' => true,   
    'validators' => array(
     array('Regex', 
      true, 
      array('/[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}/i'), 
      'messages' => array(Zend_Validate_Regex::NOT_MATCH, 
       'my not match message', 
       Zend_Validate_Regex::INVALID => 'my invalid message', 
       Zend_Validate_Regex::ERROROUS => 'my errorous message', 
      ) 
     ) 
    ) 
)); 

我也曾尝试:

'messages'=>array(
    'regexNotMatch'=>'Your own custom error message' 
) 

,但我总是得到默认的错误信息。

回答

0

我真的很喜欢这种OO方式来创建表单。自定义消息做工精细是这样的:

$form = new Zend_Form(); 
$regex = new Zend_Validate_Regex('/[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}/i'); 
$regex->setMessages(array(
    Zend_Validate_Regex::NOT_MATCH => 'my not match message', 
    Zend_Validate_Regex::INVALID => 'my invalid message', 
    Zend_Validate_Regex::ERROROUS => 'my errorous message' 
)); 
$el = new Zend_Form_Element_Text('email'); 
$el->setLabel('E-Mail') 
    ->setRequired(true) 
    ->addValidator($regex); 
$form->addElement($el); 

注意:你为什么要使用正则表达式验证,而不是EmailAddress的吗?

+0

它仍返回默认的消息 – 2012-04-16 11:53:16

+0

@Barry汉密尔顿,请参阅我的编辑。 – pltvs 2012-04-16 12:33:03

+0

我们必须在别处比较不同的值 – 2012-04-16 18:00:04

0

试试这个:

$this->addElement('text', 'email', array(
    'label' => 'E-Mail', 
    'title' => 'email..', 
    'required' => true,   
    'validators' => array(
     array('Regex', 
      true, 
      array(
       '/[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}/i', 
       'messages' => array(
        Zend_Validate_Regex::NOT_MATCH => 'my not match message', 
        Zend_Validate_Regex::INVALID => 'my invalid message', 
        Zend_Validate_Regex::ERROROUS => 'my errorous message', 
      ) 
     ) 
    ) 
));