Как работают правила проверки в laravel
В laravel для проверки некоторых вводимых пользователем данных мы можем использовать класс Validator.
Например, для регистрации по электронной почте правило проверки может быть следующим:
array( 'email' => 'required|email|unique:users,email' )
В котором говорится, что требуется электронная почта, электронная почта должна быть в формате электронной почты и не должна быть зарегистрирована в таблице users
ранее. (должно быть уникальным)
Итак, как это работает?
Использует ли он короткое замыкание ? Если мы пройдем шаг за шагом
- он проверяет, установлен ли ввод по
required
если пройдено, переходит к следующему правилу - затем проверяет, находится ли оно в формате электронной почты
если пройдено, переходит к следующему правилу - проверяет, не существует ли в таблице
users
Я спросил кое-кого, и он сказал, что это все проверяет, проходит по всем правилам.
Если правило required
не передано, нет причин проверять, есть ли ввод в формате электронной почты.
И если это не в формате электронной почты, нет необходимости проверять базу данных.
Кто-нибудь знает, как это работает?
2 answers
Это зависит от правила. На практике Laravel прекратит обработку других правил, если атрибут required
не удался. Однако, если required
пройдет, он продолжит проверку других правил.
Это означает, что вы можете получить несколько ошибок проверки в одном и том же поле.
Я не смог найти подробностей для Laravel 4, но документация Laravel 5.4 подразумевает, что все правила проверки выполняются в порядке без оценки короткого замыкания.
В Laravel 5 вы можете принудительно выполнить оценку короткого замыкания, добавив префикс "залог" к правилу проверки.
$this->validate($request, [
'title' => 'bail|required|unique:posts|max:255',
'body' => 'required',
]);
Я пришел сюда в поисках того, почему короткое замыкание будет отключено по умолчанию, я думаю, что Джеймс прав в своих рассуждениях о том, что оно предназначено для получения нескольких ошибок проверки в одном и том же поле.