Параметри пишуть після двокрапки, кілька - через кому. У 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 такий метод легко додати самому.
Якщо параметрів стає багато чи вони складні, це сигнал, що перевірку краще перенести в політику чи запит форми.