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

Метод validate

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

Синтаксис

<?php $this->validate($request, $rules, $messages); ?>

Пример

Давайте провалидируем данные при создании статьи:

<?php namespace App\Http\Controllers; use App\Models\Article; use Illuminate\Http\Request; class ArticleController extends Controller { public function store(Request $request) { $rules = [ 'title' => 'required|string|max:255', 'content' => 'required|string', 'status' => 'in:draft,published' ]; $validated = $this->validate($request, $rules); $article = Article::create($validated); return redirect('/articles')->with('success', 'Article created'); } } ?>

Пример

Валидация с пользовательскими сообщениями об ошибках:

<?php namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\Request; class UserController extends Controller { public function update(Request $request, $id) { $rules = [ 'name' => 'required|string|min:2', 'email' => 'required|email|unique:users,email,' . $id, 'age' => 'integer|min:18|max:120' ]; $messages = [ 'name.required' => 'Name is required', 'name.min' => 'Name must be at least 2 characters', 'email.unique' => 'This email is already taken', 'age.min' => 'You must be at least 18 years old' ]; $validated = $this->validate($request, $rules, $messages); $user = User::find($id); $user->update($validated); return response()->json(['message' => 'User updated successfully']); } } ?>

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

[ "message" => "User updated successfully" ]

Пример

Использование метода валидации с дополнительными условиями:

<?php namespace App\Http\Controllers; use App\Models\Order; use Illuminate\Http\Request; class OrderController extends Controller { public function store(Request $request) { $validated = $this->validate($request, [ 'product_id' => 'required|exists:products,id', 'quantity' => 'required|integer|min:1', 'price' => 'required|numeric|min:0.01', 'delivery_date' => 'required|date|after:today', 'notes' => 'nullable|string|max:500' ]); $order = Order::create($validated); return view('orders.show', ['order' => $order]); } } ?>

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

  • метод validate класса Request,
    который выполняет валидацию данных запроса напрямую
  • метод middleware класса Controller,
    который позволяет назначать посредники для контроллеров
  • метод authorize класса Controller,
    который используется для проверки прав пользователя
  • класс JsonResponse,
    который используется для возврата JSON-ответов из контроллеров
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить