如何将路由参数值传递给路由的中间件定义?
How to pass route parameter value to middleware definition for route?
我正在我们的网站上申请Litespeed cache,我需要在调用lstag
中间件时使用路由中的参数值。
我已经尝试使用
Route::getCurrentRoute()->parameter('slug');
Request->route()->paremeter('slug');
Request::route('route.name')->parameter('slug');
以及我在 Internet 上可以找到的所有其他内容,但没有任何效果。它只是抛出错误
在 web.php 第 103 行:
Call to a member function parameter() on null
我的路线完整代码是
Route::get('serialy/{slug}', 'SerialsController@show')->name('serials.show')->middleware('lstag:serial.' . Route::getCurrentRoute()->parameter('slug'));
我希望在调用路由中间件(lstag)时可以使用参数值,但我找不到任何方法可以做到这一点。有可能吗?
正如@lagbox 已经提到的那样,上述情况实际上是不可能的。
但是,您可以在控制器中使用 lstags 中间件 __construct()
( https://laravel.com/docs/6.x/controllers#controller-middleware )。
那里应该有可用的信息,可以根据需要构建 X-LiteSpeed-Tag
header。
我正在我们的网站上申请Litespeed cache,我需要在调用lstag
中间件时使用路由中的参数值。
我已经尝试使用
Route::getCurrentRoute()->parameter('slug');
Request->route()->paremeter('slug');
Request::route('route.name')->parameter('slug');
以及我在 Internet 上可以找到的所有其他内容,但没有任何效果。它只是抛出错误 在 web.php 第 103 行:
Call to a member function parameter() on null
我的路线完整代码是
Route::get('serialy/{slug}', 'SerialsController@show')->name('serials.show')->middleware('lstag:serial.' . Route::getCurrentRoute()->parameter('slug'));
我希望在调用路由中间件(lstag)时可以使用参数值,但我找不到任何方法可以做到这一点。有可能吗?
正如@lagbox 已经提到的那样,上述情况实际上是不可能的。
但是,您可以在控制器中使用 lstags 中间件 __construct()
( https://laravel.com/docs/6.x/controllers#controller-middleware )。
那里应该有可用的信息,可以根据需要构建 X-LiteSpeed-Tag
header。