Проверка ввода¶
Для проверки ввода и получения сообщений об ошибках разработан класс validator.
Пример использования¶
Рассмотрим пример регистрации пользователя. Необходимо проверить что:
- Пользователь заполнил поле E-mail, пароль и подтверждение пароля.
- Введенный E-mail является действительно E-mail.
- Введенный E-mail не занят в нашей базе данных.
- Длина пароля должна быть более 6 символов и менее 255.
- Введенный пароль совпадает с подтверждением пароля.
Даа, получается очень много проверок нужно сделать перед регистрацией пользователя. Но при помощи класса validator, все эти проверки можно уместить в 6 строк кода. Вот смотрите:
$hash[
$.email[required|email|unique:users]
$.password[required|min:6|max:255]
$.password_confirmation[same:password]
]
$hash_result[^validator:make[$hash]]
$.email
- это название поля.
required
- это условие что поле обязательно для заполнения.
email
- это условие что поле должно быть в формате E-mail.
И т.д. В конце вызывается метод make
, который возвращает hash следующего вида:
$hash[
$.status[error] - результат проверки success или error
$.message[
$.field1[Поле "field1" обязательно для заполнения.]
$.field2[Поле "field2" имеет неправильный формат.]
]
]
Если ваша форма использует класс Ajax форму, то вы можете сразу информировать пользователя о том,
что поля неправильно заполнены. Для этого необходимо в формате JSON вернуть hash $hash_result
. Вот полный пример:
$hash[
$.email[required|email|unique:users]
$.password[required|min:6|max:255]
$.password_confirmation[same:password]
]
$hash_result[^validator:make[$hash]]
^if($hash_result.status ne 'error'){
...
$hash_result.url[^auth:get_url_login[]]
}
$result[^json:string[$hash_result]]
Методы класса¶
-
@make[hash;extra_names]
Валидация ввода.
$extra_names
- дополнительный hash с красивыми именами^validator:make[$.square[required];$.square[Площадь]]
-
@beatiful[key]
Получение красивого названия поля
^validator:beatiful[square]
-
@is_email[email]
Проверка формата E-mail. Возвращает
true
илиfalse
.^if(^validator:is_email[test@gmail.com]){ Правильный формат }
Доступные правила проверки¶
- between:min,max
- Поле должно быть числом в диапазоне от
min
доmax
. - Поле должно быть корректным адресом E-mail.
- exist:table
- Поле должно существовать в заданной таблице
table
. - max:value
- Значение поля должно быть меньше или равно
value
. - min:value
- Значение поля должно быть более или равно
value
. - required
- Проверяемое поле должно иметь непустое значение.
- same:field
- Поле должно иметь то же значение, что и поле
field
. - unique:table,exceptId
- Значение поля должно быть уникальным в заданной таблице
table
. Если заданexceptId
, то из проверки исключается данная запись (Обычно это нужно при редактировании записи, чтобы исключить самого себя из проверки).