Подготовка данных в Form Request Laravel
Иногда данные с формы нужно
поправить ещё до проверки правил.
Пользователь мог ввести email
с пробелами по краям или заглавными
буквами. Для unique и сравнения
строк лучше привести значение
к единому виду заранее, иначе
валидная почта может не пройти
из-за пробела или регистра.
В Form Request для этого есть
метод prepareForValidation.
Он вызывается до rules.
Через merge подставляют
уже обработанные значения полей:
<?php
protected function prepareForValidation(): void
{
$this->merge([
'title' => trim($this->title),
'email' => strtolower($this->email),
]);
}
?>
trim убирает пробелы
по краям заголовка. strtolower
приводит email к нижнему регистру.
После merge Laravel считает,
что в запросе уже лежат эти новые
значения - и правила, и validated
увидят именно их.
Сюда же кладут простые преобразования:
пустую строку в null, сборку
полного имени из частей, замену
запятой на точку в числе. Главное -
не путать подготовку с валидацией:
здесь данные чистят и нормализуют,
а «можно или нельзя» по-прежнему
решают правила в rules.
В Form Request работника
обрежьте пробелы у поля
name.
Приведите email к нижнему регистру перед проверкой.
Когда вызывается
prepareForValidation -
до правил или после?