Zend_Validate_Regex,无法设置自定义错误消息

时间:2012-04-16 10:26:42

标签: zend-framework zend-form zend-form-element

我在设置Zend_Validate_Regex的自定义错误消息时遇到了一些麻烦。

我知道我在语法中迷失了所以任何帮助都会被我的元素声明所赞赏:

$this->addElement('text', 'email', array(
    'label' => 'E-Mail',
    'title' => 'email..',
    'required' => true,           
    'validators' => array(
        array('Regex',
            true,
            array('/[A-Z0-9._%+-]+@[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'
)

但总是收到默认的错误消息。

2 个答案:

答案 0 :(得分:0)

我真的很喜欢这种OO方式来创建表单。自定义消息可以正常工作:

$form = new Zend_Form();
$regex = new Zend_Validate_Regex('/[A-Z0-9._%+-]+@[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);

注意:您为什么使用Regex验证器而不是EmailAddress?

答案 1 :(得分:0)

试试这个:

$this->addElement('text', 'email', array(
    'label' => 'E-Mail',
    'title' => 'email..',
    'required' => true,           
    'validators' => array(
        array('Regex',
            true,
            array(
                '/[A-Z0-9._%+-]+@[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',
            )
        )
    )
));