thinkphp6中路由分组需用route::group()包裹,指定前缀、中间件或配置,并显式命名与覆盖选项;支持子文件拆分但须手动引入并清缓存。

在ThinkPHP6中定义路由分组,核心是用 Route::group() 包裹一组具有共同前缀、中间件或配置的路由,并显式设置名称和选项,避免继承全局配置导致意外行为。
基础写法:带前缀与闭包
最常用的方式是传入统一路径前缀和闭包函数:
-
Route::group('admin', function () { ... }); —— 所有内部路由自动加上
/admin前缀 - 闭包内继续用
Route::get()、Route::post()等定义具体路由,路径为相对前缀的子路径(如'user/list'实际访问地址是/admin/user/list) - 不写前缀时可传空字符串:
Route::group('', function () { ... }),用于仅统一中间件或配置,不加 URL 前缀
必须显式命名:支持权限与URL生成
每个分组内的路由应调用 →name() 设置唯一标识,尤其配合 RBAC 权限控制时:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- Route::get('user/list', 'admin.UserController@list')->name('admin.user.list');
- 命名用小写字母+点号分隔(如
admin.user.edit),便于Auth::check()按层级匹配(如admin.user可覆盖其下所有操作) - 没设 name 会导致
$request->rule()->getName()返回空或反射路径,权限校验失效
覆盖分组专属配置:避免和全局冲突
分组默认继承 config/route.php 的设置(如 url_html_suffix),需手动用 option() 覆盖:
- Route::group('api', function () { ... })->option(['url_html_suffix' => '']);
- 常见要重置的项包括:
url_html_suffix(防 .html 后缀)、url_domain_bind(防跨域跳转)、https(强制 HTTPS) - 不要依赖运行时改 config —— 分组创建时已快照配置,后续修改无效
模块化拆分:引入子路由文件
大型项目建议把分组路由拆到独立文件,但必须手动引入且注意路径写法:
- 在
route/app.php末尾添加:include_once __DIR__ . '/admin.php'; -
admin.php内仍要写完整分组:Route::group('admin', function () { ... })->name('admin.'); - 不能只写
Route::get()—— 否则丢失前缀、中间件、命名空间上下文 - 改完子文件后务必执行
php think route:clear清缓存,否则新路由不生效
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










