Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Laravel: laravel

От какого класса наследуется Form Request

Этот вопрос проверяет знание базовой структуры Laravel и понимание иерархии классов в фреймворке, конкретно для механизма Form Request.

Короткий ответ

Form Request в Laravel наследуется от класса Illuminate\Foundation\Http\FormRequest. Этот базовый класс предоставляет всю необходимую функциональность для валидации, авторизации и обработки HTTP-запросов. Form Request автоматически разрешается через Service Container Laravel.

Длинный ответ

Form Request классы в Laravel имеют четкую иерархию наследования, которая обеспечивает их функциональность.

Иерархия наследования Form Request

Illuminate\Foundation\Http\FormRequest
    ↑
Illuminate\Http\Request
    ↑
Symfony\Component\HttpFoundation\Request

Базовый класс: Illuminate\Foundation\Http\FormRequest

Этот класс предоставляет основную функциональность для Form Request:

<?php

namespace Illuminate\Foundation\Http;

use Illuminate\Http\Request;

class FormRequest extends Request
{
    use ValidatesRequests;
    
    // Основные методы, которые можно переопределять
    public function authorize() {}
    public function rules() {}
    public function messages() {}
    public function attributes() {}
    protected function prepareForValidation() {}
}

Создание кастомного Form Request

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class CreateUserRequest extends FormRequest
{
    /**
     * Определяет, авторизован ли пользователь для выполнения запроса
     */
    public function authorize(): bool
    {
        return true; // или ваша логика авторизации
    }
    
    /**
     * Возвращает правила валидации
     */
    public function rules(): array
    {
        return [
            'name' => 'required|string|max:255',
            'email' => 'required|email|unique:users',
        ];
    }
}

Ключевые методы базового класса

authorize()

  • Определяет, имеет ли пользователь право на выполнение запроса

  • Возвращает boolean

rules()

  • Возвращает массив правил валидации

  • Выполняется только если authorize() вернул true

messages()

  • Кастомные сообщения об ошибках валидации

  • Необязательный метод

attributes()

  • Кастомные имена для атрибутов в сообщениях об ошибках

  • Необязательный метод

Работа с Service Container

Form Request автоматически разрешается через Service Container:

php

// Laravel автоматически инжектит Form Request
public function store(CreateUserRequest $request)
{
    // $request уже прошел валидацию и авторизацию
    $validated = $request->validated();
}

Расширение функциональности

Можно создавать базовые Form Request классы для повторного использования:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

abstract class BaseFormRequest extends FormRequest
{
    /**
     * Общие правила для всех запросов
     */
    public function commonRules(): array
    {
        return [
            // общие правила
        ];
    }
    
    /**
     * Базовая авторизация
     */
    public function authorize(): bool
    {
        return auth()->check();
    }
}

// Использование в конкретном Request
class CreatePostRequest extends BaseFormRequest
{
    public function rules(): array
    {
        return array_merge($this->commonRules(), [
            'title' => 'required|string|max:255',
            'content' => 'required|string',
        ]);
    }
}

Вывод

Form Request наследуется от Illuminate\Foundation\Http\FormRequest, который предоставляет весь необходимый функционал для валидации и авторизации HTTP-запросов в Laravel приложениях.

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    3

Навыки

  • Laravel

    Laravel

Ключевые слова

#laravel

Подпишись на PHP Developer в телеграм

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.