我有全局中间件,我需要从routes.php
中定义的路由获取参数。我的$request->route()
是NULL
答案 0 :(得分:5)
你做不到。该路线尚未匹配。路由参数仅在路由中间件中可用。
考虑一下:全局中间件访问路由参数没有多大意义,因为每个路由都有不同的参数。
你可以获取URI段:
$id = $request->segment(2);
将所需分段的数字(基于1的索引)传递给它。
答案 1 :(得分:0)
另一种方法是手动使中间件“全局”。
方法1
将其放入$middlewareGroups
中的所有app/Http/Kernel.php
中:
protected $middlewareGroups = [
'web' => [
//...
YourGlobalMiddleware::class,
],
'api' => [
//...
YourGlobalMiddleware::class,
],
];
方法2
将所有路由打包到一个组中,并为其分配中间件:
Route::group(['middleware' => 'your_global_middleware'], function () {
//all your routes
});