Files
ulthon_admin/.agents/skills/tp-controller-url-rules/SKILL.md
2026-03-26 20:22:34 +08:00

54 lines
2.5 KiB
Markdown
Raw 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.

---
name: "tp-controller-url-rules"
description: "解释 ThinkPHP 8 多级控制器与大驼峰控制器的 URL 访问规则。当用户询问如何访问控制器、URL 报错或需要配置路由时调用。"
---
# ThinkPHP 8 控制器 URL 访问规则
本 Skill 指导如何在 ThinkPHP 8 框架中正确访问多级控制器以及采用大驼峰命名的控制器和方法。
## 1. 大驼峰命名转换规则
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`
## 2. 多级控制器访问规则
当控制器存放在子目录中时URL 访问需要使用 `.`(点号)来连接目录名和控制器名。
- **目录结构**`app/admin/controller/system/Config.php`
- **访问路径**`/admin/system.config/index`
**注意:**
- 子目录名建议使用全小写。
- 如果子目录名也是大驼峰,同样遵循转换规则(取决于具体配置,但通常建议目录名保持简单)。
## 3. 混合使用示例
结合多级目录和大驼峰命名的复杂情况:
| 控制器文件路径 | 类名 | 方法名 | 对应 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` |
## 4. 常见问题排查
- **404 错误**:检查是否漏掉了多级控制器的 `.` 分隔符。
- **大小写敏感**:如果 URL 无法识别下划线,检查 `config/route.php` 中的 `url_convert` 是否被设置为 `false`
- **多应用影响**在多应用模式下URL 的第一段通常是应用名(如 `admin`),后续才是控制器和方法。
## 5. 开发者建议
- **统一风格**:在代码中使用大驼峰命名类和方法,但在前端请求、模板链接(如 `{:url('...')}`)中建议明确指向转换后的路径或使用系统助手函数自动生成。
- **路由定义**:对于复杂的 URL建议在 `route/*.php` 中手动定义路由规则,以提供更友好的访问地址。