Я проверяю текстовое поле в своей форме следующим образом:
$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)] + $ /' – который я, очевидно, не хотите показывать пользователю.
Буду признателен за ваши материалы.
Как насчет того, чтобы рассказать пользователю о непрофессионале, какие у вас ограничения? подобно
Error: Only the letters A to Z and numbers are allowed.
(Это приводит меня к вопросу, почему первые имена могут содержать числа …)
Для пользовательских сообщений об ошибках в стандартных валидаторах zend просто передайте массив 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.
Удачи в проверке :).