Не удается установить пользовательские сообщения валидатора в Zend_Form
Я просто не могу понять, как установить собственные сообщения валидатора в объекте 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, но он все еще не работает должным образом.
Любая помощь очень ценится!
3 ответа
Я нашел свою ошибку. Я получал сообщение "notDigits", потому что в контроллере я использовал метод $form->getErrors() вместо $form->getMessages(). Первый возвращает только коды ошибок, без сообщений.
Попробуйте этот синтаксис валидатора.
$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")
));
Ваш синтаксис для установки пользовательского сообщения правильный. В приведенном вами примере кода единственным декоратором для этого элемента является 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
декоратор в стек.