Zend_Form_Element_Text过早引发错误

时间:2009-02-23 19:50:43

标签: zend-framework zend-form

这是我的代码

$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会立即触发,显示错误消息。

5 个答案:

答案 0 :(得分:1)

我现在无法测试,但我相信你应该使用addErrorMessage()代替addError()。请参阅manualAPI 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()

中的任何地方打电话