A free and open-source book on ZF3 for beginners


9.3. Поведение валидаторов в случае недействительных или недопустимых данных

Если вы передаете валидатору какие-либо данные, которые не проходят проверку, валидатор внутренне создает список сообщений об ошибках, который можно извлечь методом 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-предупреждение.

Рекомендуется проверять документацию определенного валидатора, чтобы знать о его поведении в случае недопустимых данных.


Top