Files
ulthon_admin/.agents/rules/ulthon-controller-url.md
augushong c5ebf86ad9 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
2026-06-01 21:48:27 +08:00

47 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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` 中手动定义路由规则