Lumen:如何从中间件获取 url 参数
Posted
技术标签:
【中文标题】Lumen:如何从中间件获取 url 参数【英文标题】:Lumen: how can I get url parameters from middleware 【发布时间】:2015-09-25 05:49:00 【问题描述】:这是我的routes.php
:
$app->get('/users/id/', ['middleware' => 'example', function ()
return "users";
]);
这是中间件中的handle
函数:
public function handle($request, Closure $next)
// I would like to get the value of the url parameter id here
return $next($request);
有没有办法从我的中间件中获取参数id
?
* 编辑 *
我正在使用 Lumen 5.1.0。
【问题讨论】:
我对 Laravel 不熟悉,但快速浏览后我认为您必须使用以下方法:laravel.com/docs/5.0/middleware#terminable-middleware。你能给我们类定义吗?那么,您从哪个类继承? @GuyT 我没有从任何类继承,我正在遵循一个非常简单的示例,如下所述:lumen.laravel.com/docs/middleware#defining-middleware。我的中间件类名为ExampleMiddleware
,它只有上面的方法。您链接的“可终止中间件”对我有什么用处?
【参考方案1】:
如果传入的$request
值是Illuminate\Http\Request
的一个实例,我认为它可能是,那么该类有一个名为input()
的方法,它可以让你做到这一点:
你应该试试这个:
$id = $request->input('id');
【讨论】:
我尝试使用$id = $request->input('id');
,但我在$id
中得到了null
。
题外话:截图中使用了什么字体?
我真的不记得了,那是 5 年前的事了。
没问题。谢谢!【参考方案2】:
Laravel 中的一些传统方法不适用于 Lumen。而在中间件中获取参数形式的URI就是其中之一。在 Laravel 中,我只需要调用 $request->id
,它就会像魔术一样工作。但是这里为了在 Lumen 中获取参数,我需要做这样的事情:
$request->route()[2]['id']
【讨论】:
我不知道你使用的是哪个 Laravel 版本。你能检查一下这个$request->route()->parameter('id')
吗?
@Andrea,我添加了新答案。我希望这会有所帮助
是的,它有效!但是,请给我一个解释。它是如何工作的?
当调用 $request->route() 时,它会返回一个数组,其中包含有关您的路由的信息,例如您正在使用哪个中间件,您传递了哪些参数。试试dd($request->route()
,你会明白我的意思。然后最后一个索引包含您通过路由传递的参数。
适用于 Lumen 5.1 和 Lumen 5.4。非常感谢。【参考方案3】:
我认为最新的lumen 5.6官方关于中间件的教程已经不适用了,已经过时了。
【讨论】:
以上是关于Lumen:如何从中间件获取 url 参数的主要内容,如果未能解决你的问题,请参考以下文章
laravel / lumen 访问中间件中的 .env 值