Если вы передаете валидатору какие-либо данные, которые не проходят проверку,
валидатор внутренне создает список сообщений об ошибках, который можно извлечь
методом getMessages()
. Посмотрим, например, на возможные ошибки валидации,
которые вернет EmailValidator
, если вы передадите ему значение "abc@ewr"
(обратный слеш \
обозначает переводы строки там, где код не помещается на странице книги):
array(3) {
["emailAddressInvalidHostname"] =>
string(51) "'ewr' is not a valid hostname for the email address"
["hostnameInvalidHostname"] =>
string(66) "The input does not match the expected structure for a DNS hostname"
["hostnameLocalNameNotAllowed"] =>
string(84) "The input appears to be a local network name but local network names are not allowed"
}
Метод валидатора getMessages()
вернет массив сообщений, объясняющих, почему валидация была неудачной.
Ключи массива - это идентификаторы сообщений об ошибках валидации, а значения - соответствующие
строки в удобном для человеческого восприятия виде.
Если метод isValid()
никогда не вызывался или последний вызов isValid()
вернул true
, тогда
метод getMessages()
возвращает пустой массив. Кроме того, когда вы вызываете isValid()
несколько
раз, предыдущие сообщения о валидации удаляются, и вы видите только ошибки валидации из последнего
вызова.
Некоторые валидаторы могут работать только с данными в определенном формате (например, валидатор может требовать, чтобы
входные данные были в виде строки, но не массива). Если вы передадите такому валидатору данные в недопустимом формате,
валидатор может выбросить исключение Zend\Validator\Exception\RuntimeException
или выдать PHP-предупреждение.
Рекомендуется проверять документацию определенного валидатора, чтобы знать о его поведении в случае недопустимых данных.