РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
658 of 1392 menu

Метод stopOnFirstFailure

Метод stopOnFirstFailure класса Validator применяется к экземпляру валидатора и включает режим остановки при первом же неудачном правиле валидации. Метод не принимает параметров и возвращает тот же экземпляр валидатора с изменённым поведением. Это особенно полезно при валидации форм с множеством полей, когда нет необходимости проверять остальные поля после обнаружения первой ошибки.

Синтаксис

<?php use Illuminate\Support\Facades\Validator; $validator = Validator::make($data, $rules); $validator->stopOnFirstFailure(); ?>

Пример

Давайте создадим валидатор с тремя полями и включим остановку при первой ошибке:

<?php use Illuminate\Support\Facades\Validator; $data = [ 'name' => '', 'email' => 'invalid-email', 'age' => 150, ]; $rules = [ 'name' => 'required|string|min:3', 'email' => 'required|email', 'age' => 'required|integer|min:18|max:99', ]; $validator = Validator::make($data, $rules); $validator->stopOnFirstFailure(); if ($validator->fails()) { $errors = $validator->errors()->all(); print_r($errors); } ?>

Результат выполнения кода:

["The name field is required."]

Как видите, валидация остановилась на первом правиле для поля 'name', и ошибки для полей 'email' и 'age' не были добавлены в коллекцию ошибок.

Пример

Сравним поведение валидатора без остановки и с остановкой при первой ошибке. Без остановки:

<?php use Illuminate\Support\Facades\Validator; $data = [ 'title' => '', 'content' => 'short', 'category' => 999, ]; $rules = [ 'title' => 'required|string|max:100', 'content' => 'required|string|min:50', 'category' => 'required|integer|exists:categories,id', ]; $validator = Validator::make($data, $rules); if ($validator->fails()) { $errors = $validator->errors()->all(); print_r($errors); } ?>

Результат выполнения кода:

["The title field is required.", "The content must be at least 50 characters.", "The selected category is invalid."]

А теперь с включённой остановкой:

<?php use Illuminate\Support\Facades\Validator; $data = [ 'title' => '', 'content' => 'short', 'category' => 999, ]; $rules = [ 'title' => 'required|string|max:100', 'content' => 'required|string|min:50', 'category' => 'required|integer|exists:categories,id', ]; $validator = Validator::make($data, $rules); $validator->stopOnFirstFailure(); if ($validator->fails()) { $errors = $validator->errors()->all(); print_r($errors); } ?>

Результат выполнения кода:

["The title field is required."]

Смотрите также

  • метод fails,
    который проверяет, провалилась ли валидация
  • метод passes,
    который проверяет, прошла ли валидация успешно
  • метод errors,
    который возвращает все ошибки валидации
  • метод sometimes,
    который добавляет правила валидации по условию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить