Пользовательское значимое сообщение об ошибке для Zend RegEx Validator - PullRequest
7 голосов
/ 16 марта 2010

Я проверяю текстовое поле в моей форме следующим образом:

 $name = new Zend_Form_Element_Text('name');

 $name->setLabel('First Name:')
      ->setRequired(true)
      ->addFilter(new Zend_Filter_StringTrim())
      ->addValidator('regex',true,array('/^[(a-zA-Z0-9)]+$/'))
      ->addErrorMessage('Please enter a valid first name');

Что я пытаюсь сделать, это - как я могу отобразить осмысленное сообщение об ошибке? Например: если имя 'XYZ-', как я могу отобразить '- не допускается в имени.'

Есть ли способ, с помощью которого я могу получить доступ к тому символу, для которого не подходит регулярное выражение? Вы бы порекомендовали что-нибудь еще?

Я думал о написании собственного валидатора, но регулярное выражение довольно простое, поэтому я не вижу в этом смысла. Я нигде не смог найти достойную документацию для валидатора zend 'regex'.

Если я не перезаписываю сообщение об ошибке по умолчанию, я просто получаю что-то вроде: ';;; hhbhbhb' не соответствует шаблону '/ ^ [(a-zA-Z0-9)] + $ /' - который я явно не хочу отображать пользователю.

Буду признателен за ваш вклад.

Ответы [ 2 ]

16 голосов
/ 23 октября 2010

Для ваших пользовательских сообщений об ошибках в валидаторах Zend Standart просто передайте массив messages в валидатор во время его создания. Это массив, ключи которого являются типами ошибок (см. Далее), а значения - сообщениями об ошибках.

->addValidator('regex', true, 
                       array(
                           'pattern'=>'/^[(a-zA-Z0-9)]+$/', 
                           'messages'=>array(
                               'regexNotMatch'=>'Your own custom error message'
                           )
                       )
)

Чтобы просмотреть ключи ошибок для других типов ошибок выбранного валидатора, вы можете обратиться к его исходному коду. Для regex валидатор находится в {Zend Framework Library} /Zend/Validate/Regex.php.

Удачи в проверке:).

1 голос
/ 16 марта 2010

Как насчет того, чтобы сказать пользователю с точки зрения непрофессионала, каковы ваши ограничения? Как

Error: Only the letters A to Z and numbers are allowed.

(что приводит меня к вопросу, почему имена могут содержать числа ...)

...