Zend валидаторы и сообщения об ошибках: addValidator и addErrorMessage - PullRequest
5 голосов
/ 02 октября 2010

Если у меня есть элемент формы, к которому подключено несколько валидаторов (в данном примере - 3), как бы я использовал addErrorMessage для создания пользовательских сообщений об ошибках, когда каждый уникальный валидатор дает сбой. Есть ли способ добавить пользовательское сообщение для каждого валидатора?

$element = new Zend_Form_Element_Text()...
$element->....
        ->addValidator(...)
        ->addValidator(...)
        ->addValidator(...)
        ->addErrorMessage()

Ответы [ 4 ]

11 голосов
/ 02 октября 2010

Обычно это делается для сообщения об ошибке валидатора, а не для валидатора ...

$element->setErrorMessages(array(Zend_Validate_...::CONSTANT => 'New Message'));

Но я часто предпочитаю переопределить все ошибки элемента на один

$element->setErrorMessages(array('Single Error'));

или, если мне нужно для каждого валидатора, это работает ...

$validator->setMessages('string error')

должен переопределить все ошибки валидатора на одно сообщение. Я не мог найти это нигде, но это работает для меня. Из-за этого он может работать не для всех версий?

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

Приветствия

6 голосов
/ 16 декабря 2011

Добавьте ваше сообщение вместе с валидатором, как показано ниже. Пример:

->addValidator('StringLength', false, array(0,255,'messages'=>'Cannot be more than 255 chars'))

->addValidator('NotEmpty', true, array('messages'=>'Cannot be empty'))
2 голосов
/ 13 февраля 2013

Добавьте ваше сообщение вот так

-> addValidator ('Alpha', true, array ('messages' => array ('notAlpha' => "Пожалуйста, введите буквенный символ только в названии продукта.
")));

Добавить сообщение валидатора в соответствии с вашей строкой ошибки

0 голосов
/ 24 декабря 2013

addErrorMessage («Ваше пользовательское сообщение»);Это также самый простой способ напечатать пользовательское сообщение.

addErrorMessage определено внутри libraray / zend / Form / Elements.php

Надеюсь, это поможет !!

...