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

新手上路,请多包涵

网站有两个模块,一个是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模块也会被路由了

阅读 6.9k
1 个回答

谢邀,题目描述有问题

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

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

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

参数 说明 方法名
method 请求类型检测,支持多个请求类型 method
ext URL后缀检测,支持匹配多个后缀 ext
deny_ext URL禁止后缀检测,支持匹配多个后缀 denyExt
https 检测是否https请求 https
domain 域名检测 domain
before 前置行为(检测) before
after 后置行为(执行) after
merge_extra_vars 合并额外参数 mergeExtraVars
complete_match 是否完整匹配路由 completeMatch
model 绑定模型 model
cache 请求缓存 cache
param_depr 路由参数分隔符 depr
ajax Ajax检测 ajax
pjax Pjax检测 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');
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进