Thinkphp5如何获取当前命中的路由规则?

问:thinkphp5.1如何获取当前命中的路由规则?

首先,定义路由 route.php

Route::post('/clue/:id', 'Clue/updateRecord');

在中间件或者控制器内部我想知道当前命中的是哪个路由,以便进行权限验证。

如这种

echo Route::getCurrentRule();
> /clue/:id

但简单看了下TP的逻辑,在路由规则实例化前就已经转换为
/clue/<id>的形式了,如下图。

image.png

如能获取到/clue/<id>,我自行进行反向正则替换也行。
目前还没有解决办法,一时间没有了解TP的内部处理过程,求各位解答!

又或者根据定义的路由进行动态权限验证也可提供其他方案参考,麻烦了!

阅读 5.2k
2 个回答

clipboard.png

clipboard.png

目前更换为其他方式解决,即通过动态规则匹配当前URI实现权限控制。

Route::post('/clue/:id', 'Clue/updateRecord');

获得当前PATH
echo '/' . $request->path();
> /clue/1

通过正则匹配验证
#^/clue/\d#/is

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题