tp5.1路由绑定模块 分组设置

发布于 2022-09-11 18:59:45 字数 509 浏览 13 评论 0

网站有两个模块,一个是admin,一个是index
index模块需要设置路由,admin不用。
如果是在route目录下的route.php设置路由,所有的模块都会被影响到。

模拟了一下手册的写法:
Route::group('index',function (){

Route::bind('index');
Route::rule('news/:id','index/news/detail/');

});
复制代码
然后这样访问 http://127.0.0.1/index.php/ne...
提示 方法不存在:appindexcontrollerNews->1()

如果是单独这样写是可以的 Route::rule('news/:id','index/news/detail/');

但就是admin模块也会被路由了

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

新雨望断虹 2022-09-18 18:59:45

谢邀,题目描述有问题

首先说路由规则,从 uri 来看,你想 /news/1 指向前台,/news/2 指向后台,这显然是不可能的,从路由解析角度来讲,匹配一个规则后,就会停止后续的匹配,即谁先定义谁就有优先权。

  • thinkfacadeRoute::group()

Route::group('分组名(字符串)或者分组路由参数(数组)','分组路由规则(数组或者闭包)');

明显指出第一个参数只是一个简单字串或者允许的参数

参数说明方法名
method请求类型检测,支持多个请求类型method
extURL后缀检测,支持匹配多个后缀ext
deny_extURL禁止后缀检测,支持匹配多个后缀denyExt
https检测是否https请求https
domain域名检测domain
before前置行为(检测)before
after后置行为(执行)after
merge_extra_vars合并额外参数mergeExtraVars
complete_match是否完整匹配路由completeMatch
model绑定模型model
cache请求缓存cache
param_depr路由参数分隔符depr
ajaxAjax检测ajax
pjaxPjax检测pjax
response绑定response_send行为response
validate绑定验证器类进行数据验证validate
header设置Response的header信息header
append追加额外的参数(5.1.5+append
middleware注册路由中间件(5.1.6+middleware
merge_rule_regex合并路由规则(V5.1.6+mergeRuleRegex
filter请求变量过滤(V5.1.16+filter

从另外的角度来讲,其实 Route::bind() 是 tp3 时代留下来的产物。
正如你的需求,admin 不需要路由,那你就可以用 TP 的隐式路由 即模块名/控制器/方法 这样的路由进行访问,且不得与定义的路由冲突。
最后代码中的
似乎是最后多了一个斜杠?没有测试 按理来说应该是

// Route::rule('news/:id','index/news/detail/');
 Route::rule('news/:id','index/news/detail');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文