Zend_Form_Element_Text преждевременное повышение ошибки - PullRequest
0 голосов
/ 23 февраля 2009

Это мой код

$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 ]

1 голос
/ 21 июня 2009

Я думаю, что вместо addError () для элемента формы (который делает именно то, что вы просили), вы хотите установить параметр «messages» для вашего валидатора.

Не уверен, что вы можете сделать это на "строительстве", но что-то вроде:

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

Плюс - вы, кажется, проверяете, является ли строка пустой, проверяя ее по крайней мере на 1 символ. Возможно, вы захотите переключиться на «NotEmpty» - уверен, что это будет работать:

$firstname->addValidator('NotEmpty',true, array('messages'=>'Please Provide your First Name'));
1 голос
/ 17 июня 2009

Вы должны указать сообщение при добавлении валидатора (через ключ сообщений в массиве конфигурации). И addError ($ yourErrorString), и addErrorMessage ($ messageIdentifier) ​​пометят элемент как недействительный. Проверьте руководство о переводе сообщений от валидаторов ...

1 голос
/ 23 февраля 2009

Я не могу сейчас проверить, но я считаю, что вы должны использовать addErrorMessage() вместо addError(). См. руководство и API документы .

addError() помечает элемент как недействительный, а также устанавливает сообщение об ошибке, в то время как addErrorMessage() устанавливает сообщение, которое следует использовать в случае, если элемент окажется недействительным.

0 голосов
/ 11 марта 2009

Какую версию Zend Framework вы используете?
Вы звоните куда-нибудь в коде $ form-> isValid ()

0 голосов
/ 24 февраля 2009

Даже если я использую addErrorMessage (), addValidator запускается немедленно.

...