无法在Zend_Form中设置自定义验证程序消息

时间:2012-03-01 14:00:50

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

我无法弄清楚如何在Zend_Form对象中设置自定义验证器消息。这是一个示例代码。

$this->addElement('password', 'password', array(
        'label'      => 'Password',
        'decorators' => array('ViewHelper'),
        'filters'    => array('StringTrim'),
        'validators' => array(
            array('Digits', false, array('messages' => array('notDigits' => 'Only digits are allowed here')))
        ),
        'required'   => true

    ));

当我尝试验证输入无效数据的表单时,会显示一条消息“notDigits”。我试图将'notDigits'更改为Zend_Validate_Digits :: NOT_DIGITS,但它仍然无法按预期工作。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

我发现了我的错误。我收到了'notDigits'消息,因为在控制器中我使用$ form-> getErrors()方法而不是$ form-> getMessages()。第一个只返回错误代码,没有消息。

答案 1 :(得分:1)

您设置自定义消息的语法是正确的。在您发布的代码示例中,该元素的唯一装饰器是ViewHelper,因此不会显示错误消息。

如果要查看错误消息,请至少添加Errors装饰器。试试这个:

$this->addElement('password', 'code', array(
    'label'      => 'Code',
    'decorators' => array('ViewHelper', 'Errors'),
    'filters'    => array('StringTrim'),
    'validators' => array(
        array('Digits', false,
            array('messages' => array('notDigits' => 'Only digits are allowed here')))
    ),
    'required'   => true
);

唯一的变化是将Errors装饰器添加到堆栈。

答案 2 :(得分:1)

尝试此验证程序语法。

$this->addElement("text", "fullname", array(
                        'label' => 'Your Full Name: ',
                        'required' => 'true',
                        'validators' => array(
                            array('validator' => 'StringLength', 'options' => array('min'=>5, 'max'=>250, 'messages' => array('stringLengthTooShort' => 'The name is too short.'))) 
                        ),
                        'filters' => array('StringTrim'),
                        'decorators' => array("signup")
                    ));