Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Як створити й зареєструвати middleware у Laravel 11+?

Клас створює команда:

php artisan make:middleware EnsureUserIsSubscribed
public function handle(Request $request, Closure $next): Response
{
    if (! $request->user()?->subscribed()) {
        return redirect()->route('billing');
    }

    return $next($request);
}

Як підключити - залежно від того, де він потрібен:

// на маршруті чи групі
Route::get('/reports', ReportController::class)->middleware(EnsureUserIsSubscribed::class);

// bootstrap/app.php
->withMiddleware(function (Middleware $middleware): void {
    $middleware->append(LogRequestId::class);               // глобальний, на кожен запит
    $middleware->web(append: [SetLocale::class]);           // до групи web
    $middleware->alias(['subscribed' => EnsureUserIsSubscribed::class]); // коротке ім'я
})

Після аліасу на маршруті можна писати ->middleware('subscribed').

Що змінилося: до Laravel 11 усе це жило в app/Http/Kernel.php (властивості $middleware, $middlewareGroups, $routeMiddleware). У нових застосунках цього класу немає - налаштування в bootstrap/app.php.

У Laravel 13 middleware можна призначити й атрибутом прямо на контролері: #[Middleware('subscribed')].

Докладніше в документації: Реєстрація middleware

1

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання