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

Класс Validator

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

Синтаксис

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

Пример

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

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class UserController extends Controller { public function store(Request $request) { $data = $request->all(); $rules = [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email', 'age' => 'required|integer|min:18', ]; $validator = Validator::make($data, $rules); if ($validator->fails()) { return $validator->errors(); } return 'Validation passed'; } } ?>

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

{ "name": ["The name field is required."], "email": ["The email must be a valid email address."] }

Пример

Проверим данные с использованием метода validate, который автоматически выбрасывает исключение при ошибке:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class ArticleController extends Controller { public function create(Request $request) { $data = $request->all(); $rules = [ 'title' => 'required|string|min:5', 'content' => 'required|string|min:10', 'status' => 'in:draft,published,archived', ]; $res = Validator::make($data, $rules)->validate(); return 'Article validated successfully'; } } ?>

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

"Article validated successfully"

Пример

Используем собственные сообщения об ошибках для более понятных пользователю подсказок:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class ProfileController extends Controller { public function update(Request $request) { $data = $request->all(); $rules = [ 'phone' => 'required|numeric|digits:10', 'password' => 'required|confirmed|min:8', ]; $messages = [ 'phone.required' => 'Phone number is required.', 'phone.numeric' => 'Phone must contain only numbers.', 'phone.digits' => 'Phone must be exactly 10 digits.', 'password.confirmed' => 'Password confirmation does not match.', ]; $validator = Validator::make($data, $rules, $messages); if ($validator->fails()) { return $validator->errors()->all(); } return 'Profile updated'; } } ?>

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

["Password confirmation does not match."]

Пример

Проверим массив данных с вложенными полями с использованием точечной нотации:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class OrderController extends Controller { public function store(Request $request) { $data = $request->all(); $rules = [ 'customer.name' => 'required|string|max:100', 'customer.email' => 'required|email', 'items.*.product_id' => 'required|integer|exists:products,id', 'items.*.quantity' => 'required|integer|min:1|max:99', ]; $res = Validator::make($data, $rules); if ($res->fails()) { return $res->errors(); } return 'Order created'; } } ?>

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

{ "customer.name": ["The customer.name field is required."], "customer.email": ["The customer.email field is required."] }

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

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