【问题标题】:Zend_Validate_Regex, cannot set custom error messageZend_Validate_Regex,不能设置自定义错误信息
【发布时间】:2012-04-16 10:26:41
【问题描述】:

我在为 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'
)

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

【问题讨论】:

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


    【解决方案1】:

    我真的很喜欢这种 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?

    【讨论】:

    • 它仍然返回默认消息
    • 我们必须在其他地方以同样的方式比较不同的值
    • 例如所以他们不是我们不使用 EmailAddress 的理由,但在其他地方我们正则表达式验证其他东西并面临同样的问题/
    【解决方案2】:

    试试这个:

    $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',
                )
            )
        )
    ));
    

    【讨论】:

      猜你喜欢
      • 2018-01-31
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      • 2017-01-28
      相关资源
      最近更新 更多