如何将路由参数值传递给路由的中间件定义?

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。