0

这是我的代码

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

4

5 回答 5

1

我认为您希望将“消息”参数设置为您的验证器,而不是表单元素上的 addError() (它完全按照您的要求执行)。

不确定您是否可以在“建筑”中做到这一点,但类似于:

$firstname->getValidator('StringLength')->setMessages(array( 
  'stringLengthTooShort' => '%value% whatever message'
));

另外-您似乎正在通过测试至少1个字符长来测试字符串是否为空。您可能想切换到“NotEmpty” - 很确定这会起作用:

$firstname->addValidator('NotEmpty',true, array('messages'=>'Please Provide your First Name'));
于 2009-06-21T08:11:06.190 回答
1

我现在无法测试,但我相信你应该使用addErrorMessage()而不是addError(). 请参阅手册API 文档

addError()将元素标记为无效并设置错误消息,同时addErrorMessage()设置在元素无效时应使用的消息。

于 2009-02-23T20:34:26.507 回答
1

您应该在添加验证器时指定消息(通过配置数组中的消息键)。addError($yourErrorString) 和 addErrorMessage($messageIdentifier) 都会将元素标记为无效。检查有关翻译来自验证器的消息的手册...

于 2009-06-17T16:59:52.993 回答
0

Even if I use addErrorMessage() the addValidator is firing immediately.

于 2009-02-24T14:31:00.553 回答
0

您使用的是哪个版本的 Zend Framework?
你在代码中的任何地方调用 $form->isValid()

于 2009-03-10T23:05:23.663 回答