【问题标题】:How to pass route parameter value to middleware definition for route?如何将路由参数值传递给路由的中间件定义?
【发布时间】:2019-10-09 20:53:22
【问题描述】:

我在我们的网站上申请Litespeed cache,调用lstag中间件时需要使用路由中的参数值。

我已经尝试过使用

Route::getCurrentRoute()->parameter('slug');
Request->route()->paremeter('slug');
Request::route('route.name')->parameter('slug');

以及我在 Internet 上可以找到的所有其他内容,但没有任何效果。它只是抛出错误 在 web.php 第 103 行:

在 null 上调用成员函数 parameter()

我的完整路线代码是

Route::get('serialy/{slug}', 'SerialsController@show')->name('serials.show')->middleware('lstag:serial.' . Route::getCurrentRoute()->parameter('slug'));

我希望在调用路由中间件 (lstag) 时可以使用参数值,但我找不到任何方法。有可能吗?

【问题讨论】:

  • 路由在派发之前注册...路由注册时没有处理路由(没有当前路由)...如果你需要一个参数的值您需要在中间件中获取它

标签: php laravel litespeed


【解决方案1】:

正如@lagbox 已经提到的那样,上述情况实际上是不可能的。

但是,您可以使用控制器 __construct() ( https://laravel.com/docs/6.x/controllers#controller-middleware ) 中的 lstags 中间件。

在那里,您应该有可用的信息,您可以根据需要构建 X-LiteSpeed-Tag 标头。

【讨论】:

  • 所以我打电话给$this->middleware('lstags:tag'),它正在工作。
猜你喜欢
  • 2021-04-24
  • 1970-01-01
  • 2016-09-21
  • 1970-01-01
  • 1970-01-01
  • 2020-02-06
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
相关资源
最近更新 更多