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

Функция validate

Функция validate используется для проверки входящих данных в контроллерах Laravel. Она доступна через объект запроса Illuminate\Http\Request. Первым параметром передаётся массив правил валидации, вторым - массив пользовательских сообщений об ошибках, третьим - массив пользовательских названий полей. В случае успешной проверки возвращается массив проверенных данных, в случае ошибки автоматически генерируется ответ с перенаправлением на предыдущую страницу.

Синтаксис

<?php $validated = $request->validate($rules, $messages, $attributes); ?>

Пример

Давайте проверим запрос на создание статьи. Поле 'title' должно быть обязательным и иметь длину не менее 3 символов, поле 'content' - обязательным, а поле 'status' должно быть перечислено в списке допустимых значений:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class ArticleController extends Controller { public function store(Request $request) { $validated = $request->validate([ 'title' => 'required|string|min:3', 'content' => 'required|string', 'status' => 'required|in:draft,published', ]); echo "Validation passed"; return $validated; } } ?>

Пример

Теперь добавим пользовательские сообщения об ошибках для более детального описания проблемы. Также зададим русские названия для полей:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class ArticleController extends Controller { public function store(Request $request) { $validated = $request->validate([ 'title' => 'required|string|min:3', 'content' => 'required|string', 'status' => 'required|in:draft,published', ], [ 'title.required' => 'The title is required.', 'title.min' => 'The title must be at least 3 characters.', 'content.required' => 'The content is required.', 'status.required' => 'The status is required.', 'status.in' => 'The status must be either draft or published.', ], [ 'title' => 'Title', 'content' => 'Content', 'status' => 'Status', ]); echo "Validation passed"; return $validated; } } ?>

Пример

Если требуется выполнить сложную валидацию, условие проверки можно записать в виде массива с использованием класса Rule. Например, проверим, что email уникален в таблице пользователей:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Validation\Rule; class UserController extends Controller { public function store(Request $request) { $validated = $request->validate([ 'email' => [ 'required', 'email', Rule::unique('users', 'email'), ], 'password' => 'required|min:8|confirmed', ]); echo "User validated"; return $validated; } } ?>

Результат выполнения кода при успешной валидации:

"User validated"

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

  • класс FormRequest,
    который позволяет вынести логику проверки в отдельный класс
  • класс Validator,
    который позволяет создавать валидатор вручную
  • правило required,
    которое делает поле обязательным для заполнения
  • правило unique,
    которое проверяет уникальность значения в таблице
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить