如何从Laravel 5中的请求中检索url参数?

Ale*_*mia 5 php laravel laravel-5 laravel-request laravel-middleware

我想在中间件中使用模型执行某些操作.这是我想要实现的一个例子:

public function handle($request, Closure $next)
{
    $itemId = $request->param('item'); // <-- invalid code, serves for illustration purposes only
    $item   = Item::find($itemId);

    if($item->isBad()) return redirect(route('dont_worry'));

    return $next($request);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何从中检索所需的参数$request

Jus*_*and 9

如果参数是URL的一部分并且此代码正在Middleware中使用,则可以从给定的路径中按名称访问参数:

public function handle($request, Closure $next)
{
    $itemId = $request->route()->getParameter('item');
    $item   = Item::find($itemId);

    if($item->isBad()) return redirect(route('dont_worry'));

    return $next($request);
}
Run Code Online (Sandbox Code Playgroud)

这基于如下路线: '/getItem/{item}'

  • 我收到错误:'getParameter()'方法不存在.我得到了这样的参数:`$ request-> route() - > parameters ['item']` (7认同)
  • 我也是。$ request-&gt; route('item')`对我有用。Laravel 5.7 (2认同)
  • $ request-&gt; route()-&gt; parameters ['item']和$ request-&gt; route('item')都适用于laravel 5.5。但是'getParameter()'没有 (2认同)

小智 7

public function handle(Request $request, Closure $next)
{
    $itemId = $request->item;
    //..............

}
Run Code Online (Sandbox Code Playgroud)