全局中间件如何接收路径参数

这是我所定义的路由

Route::get('/getByCode/{code}', 'OrgController@getByCode')->name('org.getByCode');\

这是我所定义的中间件

public function handle($request, Closure $next)
{
  return $next($this->encrypt($request));
}

我的想法是在中间件中获取到前端发送过来的所有参数,但我发现当我直接使用 $request->all()是无法获取到路径参数的,即使我使用了以下方法,也未解决

# 这里需要接收的参数是 code
$request->code
\Route::input('code')
request()->route('code')
StuChoChik
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案
$request->segments();
4年前 评论
StuChoChik (楼主) 4年前
W-W (作者) 4年前
讨论数量: 4
  • 如果要获取你定义的路由中的可变参数值,可以通过打印 $request->route()->parameters() 来查看你定义的变量参数值,该方法就可以打印出你的code值,需要匹配的是当前路由哦;
  • 如果是获取POST请求数据或者GET请求?后面的请求参数,可以通过打印 $request->all() 来查看请求参数值;
4年前 评论
StuChoChik (楼主) 4年前
mengdodo
public function handle($request, Closure $next){
        $currentUrl = \URL::full();    // "http://xxx.com/aaa/bbb/step1"
        $routeName = \Request::route()->getName();   // "user.index"
        $getPrefix = $request->route()->getPrefix(); //get prefix name
        ……
 }
4年前 评论
StuChoChik (楼主) 4年前
$request->segments();
4年前 评论
StuChoChik (楼主) 4年前
W-W (作者) 4年前
JaguarJack

全局中间件是拿不到路由的参数。从打印 Request 来看,全局中间件应该是在路由解析之前

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!