这是我的代码
$firstname = new Zend_Form_Element_Text('firstname', array('id' => 'firstname'));
$firstname->setLabel('Firstname')
->addError('Your firstname.')
->addFilter('StringTrim')
->addFilter('StripTags')
->addValidator('StringLength', false, array(1))
->setRequired(true);
$form->addElement($firstname);
加载页面后,addValidator会立即触发,显示错误消息。
答案 0 :(得分:1)
我现在无法测试,但我相信你应该使用addErrorMessage()
代替addError()
。请参阅manual和API docs。
addError()
将元素标记为无效并设置错误消息,而addErrorMessage()
设置应该使用的消息,以防该元素变为无效。
答案 1 :(得分:1)
添加验证程序时应指定消息(通过config数组中的messages键)。 addError($ yourErrorString)和addErrorMessage($ messageIdentifier)都会将元素标记为无效。检查有关翻译来自验证器的消息的手册......
答案 2 :(得分:1)
我认为而不是在表单元素上添加addError()(它完全按照您的要求执行),您希望将“messages”参数设置为验证器。
不确定你是否可以在“建筑”中这样做,但是:
$firstname->getValidator('StringLength')->setMessages(array(
'stringLengthTooShort' => '%value% whatever message'
));
另外 - 您似乎通过测试字符串至少为1个字符来测试字符串是否为空。您可能希望切换到“NotEmpty” - 非常确定这将起作用:
$firstname->addValidator('NotEmpty',true, array('messages'=>'Please Provide your First Name'));
答案 3 :(得分:0)
即使我使用addErrorMessage(),addValidator也会立即触发。
答案 4 :(得分:0)
您使用的是什么版本的Zend Framework? 你是否在代码$ form-> isValid()
中的任何地方打电话