2015-01-25 2 views
1

У меня есть форма вместе с фильтрами и валидаторами, которые работают корректно.Zend Form Validation error error

Однако я не могу заставить пользовательские сообщения об ошибках работать. До сих пор я пытался.

$inputFilter->add(array(
      'name'  => 'message', 
      'required' => TRUE, 
      'filters' => array(
       array('name' => 'StripTags'), 
       array('name' => 'StringTrim'), 
      ), 
      'validators' => array(
       array(
        'name' => 'NotEmpty', 
        'messages' => array(
         NotEmpty::IS_EMPTY => "You must specify your message", 
        ), 
       ), 
      ), 
     )); 

Все, что я получаю это стандартная ошибка проверки сообщения «Значение является обязательным и не может быть пустым»

Пожалуйста, может кто-то мне точку в правильном направлении, большое спасибо.

ответ

2

Вы должны поместить свои сообщения стека в options верхнего ключа в конфигурации валидаторов, как показано ниже:

Неправильно:

'validators' => array(
    array(
     'name' => 'NotEmpty', 
     'messages' => array(
      NotEmpty::IS_EMPTY => "You must specify your message", 
     ), 
    ), 
), 

Правильно:

'validators' => array(
    array(
     'name' => 'NotEmpty', 
     'options' => array(
      'messages' => array(
       NotEmpty::IS_EMPTY => "You must specify your message", 
      ), 
     ), 
    ), 
), 
+0

Я думаю, что правильный ключ 'messageTemplates '. 'messages' содержит ошибки, которые уже произошли, тогда как' messageTemplates' устанавливает шаблон для использования, когда вызывается метод 'error' с определенным типом ошибки. ([См. Реализацию AbstractValidator :: createMessage] (https://github.com/zendframework/zf2/blob/master/library/Zend/Validator/AbstractValidator.php#L285)) –

+0

Это интересно. Ваш аргумент кажется правильным. Я просто проследил поток до 'error()' и 'createMessage()' шагов внутри AbstractValidator не может понять, как это работает. Раньше я никогда не использовал ключ 'messageTemplates'. – edigu

+0

Спасибо @foozy, ваш ответ сработал нормально, размещение сообщений по опциям сделало трюк. – Garry