Вопрос проверяет, понимаете ли вы, как Laravel работает с входящими HTTP-данными и где правильно размещать логику валидации.
Request в Laravel представляет входящий HTTP-запрос и даёт доступ к параметрам, заголовкам, файлам и пользователю. Правила валидации можно описывать прямо в контроллере, но чаще используют отдельные классы FormRequest. В FormRequest правила валидации описываются в методе rules(). Такой подход делает код чище и переиспользуемым.
Laravel предлагает удобную и структурированную работу с входящими данными через объект запроса.
Определение: Request — это объект, который инкапсулирует HTTP-запрос и предоставляет безопасный доступ к его данным.
Requestдоступ к данным запроса (input, query, all)
доступ к файлам (file)
информацию о пользователе (user)
методы валидации
Перед перечислением важно понимать, что Laravel предлагает несколько уровней валидации.
В контроллере
Подходит для простых случаев.
$validated = $request->validate([
'email' => 'required|email',
'age' => 'integer|min:18',
]);
В FormRequest (рекомендуемый способ)
Используется для более сложных форм и API.
class StoreUserRequest extends \Illuminate\Foundation\Http\FormRequest
{
public function rules(): array
{
return [
'email' => 'required|email',
'age' => 'integer|min:18',
];
}
}
Такой Request автоматически валидируется до попадания в контроллер.
FormRequestкастомные сообщения об ошибках
проверка прав доступа (authorize)
подготовка данных (prepareForValidation)
Если валидация простая — можно оставить её в контроллере, но для реальных проектов и повторного использования лучше применять FormRequest.