refactor(rules): 精简 AGENTS.md,下沉模块级规则,迁移 skill 为 rule

- tp-controller-url-rules skill 迁移为 rule ulthon-controller-url.md
- AGENTS.md「其他规则」中的 source/ 约定下沉为 ulthon-source-directory.md
- AGENTS.md「其他规则」中的部署栈+命令执行环境下沉为 ulthon-deploy-environment.md
- AGENTS.md 精简:其他规则从 10 条减至 5 条,规则维护机制从 10 行减至 4 行
- ulthon-rules-manager 技能增加 rules/skills 边界判定说明
- rules 定位拓宽:约束、约定、设计决策均可作为 rule
This commit is contained in:
augushong
2026-06-01 21:48:27 +08:00
parent 6d2963a9a4
commit c5ebf86ad9
6 changed files with 123 additions and 75 deletions

View File

@@ -0,0 +1,46 @@
# ThinkPHP 8 控制器 URL 访问规则
> 来源框架内置ulthon-
> 作用域所有涉及控制器路由、URL 构造的场景
> 触发条件:编写/调试控制器路由、URL 报错、配置路由时加载
## 大驼峰命名转换规则
ThinkPHP 8 默认开启 URL 自动转换(`url_convert`。大驼峰命名CamelCase的控制器和方法在 URL 中转换为小写+下划线snake_case
- **控制器类名**`UserGroup` -> URL`user_group`
- **操作方法名**`public function editInfo()` -> URL`edit_info`
示例:控制器 `app\admin\controller\UserGroup.php` 中的 `editInfo` 方法:
访问路径:`/admin/user_group/edit_info`
## 多级控制器访问规则
控制器存放在子目录中时URL 使用 `.`(点号)连接目录名和控制器名。
- **目录结构**`app/admin/controller/system/Config.php`
- **访问路径**`/admin/system.config/index`
注意:
- 子目录名建议使用全小写
- 如果子目录名也是大驼峰,同样遵循转换规则
## 混合使用示例
| 控制器文件路径 | 类名 | 方法名 | 对应 URL 路径 |
|---|---|---|---|
| `controller/Index.php` | `Index` | `index` | `/admin/index/index` |
| `controller/UserGroup.php` | `UserGroup` | `add` | `/admin/user_group/add` |
| `controller/system/Admin.php` | `Admin` | `login` | `/admin/system.admin/login` |
| `controller/mall/GoodsCate.php` | `GoodsCate` | `getList` | `/admin/mall.goods_cate/get_list` |
## 常见问题排查
- **404 错误**:检查是否漏掉了多级控制器的 `.` 分隔符
- **大小写敏感**URL 无法识别下划线时,检查 `config/route.php``url_convert` 是否为 `false`
- **多应用影响**多应用模式下URL 第一段是应用名(如 `admin`),后续才是控制器和方法
## 开发者建议
- 代码中使用大驼峰命名,前端请求/模板链接中明确指向转换后的路径,或使用系统助手函数自动生成
- 复杂 URL 建议在 `route/*.php` 中手动定义路由规则