Zend_Validate_Between странное сообщение об ошибке - PullRequest
4 голосов
/ 13 июня 2009

Я экспериментирую с классом Zend_Validate_Between .

Я настроил это так:

$scoreBetweenValidator = new Zend_Validate_Between(-3, 3, true);

, поэтому валидатор должен принимать значения только от -3 до 3 включительно.

На недопустимом значении, которое я получил, '% value%' не найдено в сообщении об ошибке haystack , которое, я думаю, принадлежит классу Zend_Validate_InArray (Zend_Validate_InArray :: NOT_IN_ARRAY) .

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

Я пробовал это:

$scoreBetweenValidator->setMessages(array(
        Zend_Validate_Between::NOT_BETWEEN_STRICT => 'my custom msg',
        Zend_Validate_Between::NOT_BETWEEN => 'my other custom msg',
            //'notInArray' => "doesn't work"
            //Zend_Validate_InArray::NOT_IN_ARRAY => "also doesn't work"
    ));

но я получил Не существует шаблон сообщения для ключа 'notInArray' исключение.

Какое предпочтительное решение для настройки пользовательских сообщений проверки в Zend Framework?

В ответ Джейсону:

A Zend_Form_Element_Select находится внутри класса Zend_Form , присоединенного с помощью метода addElements .

Форма не имеет никаких других элементов, кроме этого, и у нее нет других валидаторов, кроме Between.

Параметры выбора все действительны по умолчанию, но когда я настраиваю значение параметра (с помощью Firebug) и устанавливаю недопустимое значение (как попытка самовосстановления), я получаю исключение notInArray.

Ответы [ 2 ]

9 голосов
/ 14 июня 2009

Zend_Form_Element_Select автоматически добавляет валидатор InArray к себе.

Чтобы установить для него сообщение об ошибке, нужно сделать следующее:

$element->getValidator('InArray')->setMessage('Your inArray error message here', Zend_Validate_InArray::NOT_IN_ARRAY);

Если вам вообще не нужен валидатор InArray, вы можете отключить это поведение, вызвав setRegisterInArrayValidator(false) для элемента или передав false в конфигурационный ключ registerInArrayValidator при создании элемента.

0 голосов
/ 22 марта 2012

Я новичок, поэтому я изменил сообщения в Zend \ Validate \ EmailAddress.php. После его электронной почты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...