2012-03-01 55 views
1

我只是无法弄清楚如何在Zend_Form对象中设置自定义验证器消息。这是一个示例代码。无法在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,但它仍然无法按预期工作。

任何帮助,非常感谢!

回答

2

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

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装饰器添加到堆栈。

+0

谢谢你的回复drew010。我不使用Errors装饰器,因为我使用$ form-> getErrors()方法捕获控制器中的错误,所以我可以将它们显示在单独的DIV中。错误显示正确,但翻译不适用。 – stefan 2012-03-02 07:06:39

0

试试这个验证器语法。

$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") 
        )); 
相关问题