Laravel中间件传多个参数需用英文逗号分隔,按顺序在handle方法中接收:public function handle($request, Closure $next, $action, $resource),或用...$params接收数组;参数均为字符串,不支持命名传参。

Laravel中间件传多个参数非常直接,核心是用英文逗号分隔,然后在 handle 方法中按顺序接收即可。
语法写法:冒号后跟逗号分隔的值
在路由定义里,把多个参数写在冒号后面,用英文逗号连接:
Route::get('/posts', [PostController::class, 'index'])->middleware('permission:edit,posts');
这表示向 permission 中间件传递两个字符串参数:'edit' 和 'posts'。
中间件中接收多个参数
在中间件的 handle 方法里,把参数依次声明为形参(顺序必须一致):
public function handle($request, Closure $next, $action, $resource)
-
$action对应第一个参数edit -
$resource对应第二个参数posts
也可以用可变参数语法一次性接收全部:
public function handle($request, Closure $next, ...$params)
-
$params是数组,如['edit', 'posts'] - 适合参数数量不固定或需遍历判断的场景(比如多角色校验)
注意事项
所有参数都是字符串类型,Laravel 不做自动类型转换:
- 如果需要整数,手动用
(int)$limit或intval() - 布尔值需显式判断,例如
$flag === 'true' - JSON 或复杂结构建议编码传输(如
config:{"timeout":30}),再用json_decode()解析
参数不支持命名传参,只支持位置匹配;也不支持在构造函数里接收——所有参数必须从 handle 方法获取。


















