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

Як передати параметри в middleware?

Параметри пишуть після двокрапки, кілька - через кому. У handle() вони приходять після $next.

Route::put('/posts/{post}', [PostController::class, 'update'])
    ->middleware('role:editor,admin');
class EnsureUserHasRole
{
    public function handle(Request $request, Closure $next, string ...$roles): Response
    {
        if (! $request->user()?->hasAnyRole($roles)) {
            abort(403);
        }

        return $next($request);
    }
}

Знайомі приклади з фреймворку:

  • throttle:60,1 - 60 запитів на хвилину;
  • can:update,post - перевірка політики з моделлю з параметра маршруту;
  • auth:sanctum - гард для автентифікації;
  • cache.headers:public;max_age=3600 - параметри через крапку з комою.

Без рядків: вбудовані middleware мають статичні методи using(), що збирають цей рядок, - так IDE бачить посилання на клас:

->middleware(ThrottleRequests::using('uploads'))
->middleware(Authorize::using('update', 'post'))

Для власного middleware такий метод легко додати самому.

Якщо параметрів стає багато чи вони складні, це сигнал, що перевірку краще перенести в політику чи запит форми.

Докладніше в документації: Параметри middleware

Перевір себе

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

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