Правило bail
Правило bail применяется в валидации Laravel для того,
чтобы остановить проверку поля после первой же неудачной
проверки. Это особенно полезно, когда последующие правила
могут привести к неожиданным ошибкам или когда вы хотите
показывать только первое сообщение об ошибке для каждого
поля.
Синтаксис
Правило bail указывается в массиве правил валидации
перед остальными правилами для поля:
<?php
$rules = [
'email' => 'bail|required|email|unique:users',
];
?>
Пример
Рассмотрим базовый пример использования правила bail
в контроллере для валидации email-адреса:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function store(Request $request)
{
$validated = $request->validate([
'email' => 'bail|required|email|unique:users',
]);
echo "Validation passed";
}
}
?>
Если поле email отсутствует в запросе, валидация
остановится на правиле required и не будет проверять
правила email и unique.
Пример
Сравним поведение валидации с правилом bail и без него
для поля password:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class AuthController extends Controller
{
public function register(Request $request)
{
$validated = $request->validate([
'password' => 'bail|required|min:8|confirmed',
]);
$res = $validated;
echo "Registration successful";
}
}
?>
Результат выполнения кода при отсутствии поля password:
"The password field is required."
Без правила bail вы бы получили все ошибки сразу:
и о том, что поле обязательно, и о минимальной длине,
и о подтверждении пароля.
Пример
Рассмотрим более сложный пример с несколькими полями,
где некоторые используют bail, а другие нет:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ProfileController extends Controller
{
public function update(Request $request)
{
$validated = $request->validate([
'name' => 'bail|required|string|max:255',
'age' => 'required|integer|min:18|max:100',
'email' => 'bail|required|email',
]);
$res = $validated;
echo "Profile updated";
}
}
?>
В этом примере поля name и email используют
правило bail, поэтому для них будет показана только
первая ошибка. Поле age без bail может вернуть
несколько ошибок одновременно.
Смотрите также
-
правило
required,
которое проверяет наличие поля -
правило
email,
которое проверяет корректность email-адреса -
правило
min,
которое проверяет минимальное значение -
метод
stopOnFirstFailure,
который останавливает всю валидацию при первой ошибке