Не удается установить собственные сообщения валидатора в Zend_Form - PullRequest
1 голос
/ 01 марта 2012

Я просто не могу понять, как устанавливать собственные сообщения валидатора в объекте 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 ]

2 голосов
/ 05 марта 2012

Я нашел свою ошибку.Я получал сообщение notDigits, потому что в контроллере я использовал метод $ form-> getErrors () вместо $ form-> getMessages ()Первый возвращает только коды ошибок без сообщений.

1 голос
/ 16 ноября 2013

Попробуйте этот синтаксис валидатора.

$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")
                    ));
1 голос
/ 01 марта 2012

Ваш синтаксис для установки пользовательского сообщения правильный.В приведенном вами примере кода единственным декоратором для этого элемента является 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 в стек.

...