Из справочного руководства (выделено мое):
Некоторые разработчики могут захотеть предоставить специальные сообщения об ошибках для валидатора. Аргумент $options
метода Zend_Form_Element::addValidator()
позволяет сделать это, предоставив ключ 'messages'
и сопоставив его с массивом пар ключ / значение для настройки шаблонов сообщений. Вам необходимо знать коды ошибок различных типов ошибок валидации для конкретного валидатора .
Так что вы можете сделать:
$form = new Zend_Form;
$username = new Zend_Form_Element_Text('username');
$username->addValidator('regex', false, array(
'/^[a-z]/i',
'messages' => array(
'regexInvalid' => 'foo',
'regexNotMatch' => 'bar',
'regexErrorous' => 'baz'
)
));
$form->addElement($username);
$form->isValid(array('username' => '!foo'));
, который затем отобразит 'bar' для сообщения об ошибке, потому что регулярное выражение не совпадает, потому что оно не начинается с буквы от -Z.
Это эквивалентно использованию:
$username->setErrorMessages(
array(
'regexNotMatch' => 'The value %value% must start with a-Z',
…
)
);
Я использовал другой шаблон, чтобы проиллюстрировать, как использовать проверенное значение в шаблоне.
Вы также можете использовать setErrors
, если хотите удалить любые шаблоны по умолчанию, например,
$username->setErrors(array('The value must start with a-Z'));
Что бы вы ни делали, вам нужно настроить до проверки с помощью isValid
. После запуска проверки Zend_Form_Element
будет содержать сообщение об ошибке по умолчанию, в противном случае. Тогда я не знаю, как это можно сбросить (хотя кто-то может захотеть меня поправить).
Далее цитируем справочное руководство:
Лучшим вариантом является использование Zend_Translate_Adapter с вашей формой. Коды ошибок автоматически передаются адаптеру декоратором ошибок по умолчанию; затем вы можете указать свои собственные строки сообщений об ошибках, настроив переводы для различных кодов ошибок ваших валидаторов.
Все сообщения проверки могут быть настроены из файла в
Файл должен быть в APPLICATION_PATH/resources/languages
, но его действительно можно разместить где угодно, если вы скажете Zend_Translate
, где его найти.