我无法弄清楚如何在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,但它仍然无法按预期工作。
非常感谢任何帮助!
答案 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")
));