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

Метод prepareForValidation

Метод prepareForValidation вызывается автоматически перед применением правил валидации к данным запроса. Он позволяет подготовить входные данные, например, преобразовать строки в числа, обрезать пробелы или изменить формат полей. Метод не принимает параметров и не возвращает значения, но может модифицировать свойство $this->merge или использовать свойство $this->replace для изменения входных данных. Обычно используется для нормализации данных перед валидацией.

Синтаксис

<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class PostRequest extends FormRequest { protected function prepareForValidation(): void { $this->merge([ 'field' => $this->input('field') ]); } } ?>

Пример

Давайте подготовим данные для валидации, преобразуя строковое значение 'age' в целое число:

<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class UserRequest extends FormRequest { protected function prepareForValidation(): void { $this->merge([ 'age' => (int) $this->input('age') ]); } public function rules(): array { return [ 'age' => 'required|integer|min:18' ]; } } ?>

Контроллер, использующий этот запрос:

<?php namespace App\Http\Controllers; use App\Http\Requests\UserRequest; class UserController extends Controller { public function store(UserRequest $request) { $res = 'User validated successfully'; echo $res; } } ?>

Пример

Давайте обрежем пробелы во всех полях запроса и преобразуем пустые строки в null:

<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class ProfileRequest extends FormRequest { protected function prepareForValidation(): void { $data = $this->all(); foreach ($data as $key => $value) { if (is_string($value)) { $data[$key] = trim($value); if ($data[$key] === '') { $data[$key] = null; } } } $this->replace($data); } public function rules(): array { return [ 'name' => 'required|string|max:255', 'email' => 'required|email', 'phone' => 'nullable|string' ]; } } ?>

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

[ 'name' => 'John Doe', 'email' => 'john@example.com', 'phone' => null ]

Пример

Давайте объединим поля 'first_name' и 'last_name' в одно поле 'full_name' перед валидацией:

<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class NameRequest extends FormRequest { protected function prepareForValidation(): void { $firstName = $this->input('first_name'); $lastName = $this->input('last_name'); $this->merge([ 'full_name' => trim($firstName . ' ' . $lastName) ]); } public function rules(): array { return [ 'first_name' => 'required|string', 'last_name' => 'required|string', 'full_name' => 'required|string|max:255' ]; } } ?>

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

[ 'first_name' => 'John', 'last_name' => 'Doe', 'full_name' => 'John Doe' ]

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

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