diff --git a/docs/EXPERIENCES.md b/docs/EXPERIENCES.md index bc02298..8955eb1 100644 --- a/docs/EXPERIENCES.md +++ b/docs/EXPERIENCES.md @@ -67,7 +67,7 @@ if (!empty($category['is_enable'])) ## 🟡 P1 — 严重问题 -### 4. 插件视图路径:必须用 `../../../plugins/插件名/view/...` +### 4. 插件视图路径:`../../../plugins/插件名/view/{group}/controller/action` ShopXO 插件控制器继承 `app\admin\controller\Common` 后,模板引擎默认去找 `app/admin/view/default/` 而非插件目录。 @@ -75,11 +75,39 @@ ShopXO 插件控制器继承 `app\admin\controller\Common` 后,模板引擎默 // ❌ 错误:引擎截断路径 return MyView('venue/list'); -// ✅ 正确:跨模块绝对路径 -return MyView('../../../plugins/vr_ticket/view/venue/list'); +// ❌ 错误:路径片段顺序颠倒(admin/view/ vs view/admin/) +return MyView('../../../plugins/vr_ticket/admin/view/seat_template/list'); +// ↑ admin/view/ 是错的 +// 正确:view/admin/ ↓ +return MyView('../../../plugins/vr_ticket/view/admin/seat_template/list'); ``` -**教训**:插件视图必须放在插件根目录的 `view/` 下(不是 `admin/view/`),且调用时加 `../../../plugins/插件名/view/...` 前缀。 +**ShopXO 插件视图目录结构**(必须严格遵守): + +``` +app/plugins/vr_ticket/ +├── admin/ ← 控制器目录(PHP 类),不是视图目录! +│ └── Admin.php +├── view/ ← 视图文件根目录 +│ ├── admin/ ← 后台视图(group=admin) +│ │ ├── seat_template/list.html +│ │ ├── seat_template/save.html +│ │ ├── ticket/list.html +│ │ ├── verifier/list.html +│ │ └── verification/list.html +│ ├── goods/ ← C端商品页视图 +│ └── venue/ ← C端场馆视图 +``` + +**完整路径公式**:`../../../plugins/vr_ticket/view/{group}/{controller}/{action}` + +| 场景 | group | 示例路径 | +|------|-------|---------| +| 后台管理 | `admin` | `../../../plugins/vr_ticket/view/admin/seat_template/list` | +| C端前台 | `goods` | `../../../plugins/vr_ticket/view/goods/ticket_detail` | +| C端场馆 | `venue` | `../../../plugins/vr_ticket/view/venue/list` | + +**教训**:插件视图放在插件根目录的 `view/` 下(不是 `admin/view/`),路径公式 `../../../plugins/插件名/view/{group}/controller/action` 中的 `view/{group}/` 顺序不能颠倒。 ---