From 6fae4069821b165704e5a63da24f497f60e57adf Mon Sep 17 00:00:00 2001 From: Council Date: Sat, 25 Apr 2026 19:46:12 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BC=BA=E5=8C=96=E7=BB=8F=E9=AA=8C#4?= =?UTF-8?q?=20=E2=80=94=20=E6=8F=92=E4=BB=B6=E8=A7=86=E5=9B=BE=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=20view/{group}/=20=E7=BB=93=E6=9E=84=E5=9B=BE?= =?UTF-8?q?=E8=A7=A3=EF=BC=8C=E9=98=B2=E6=AD=A2=20admin/view/=20vs=20view/?= =?UTF-8?q?admin/=20=E9=A1=BA=E5=BA=8F=E9=A2=A0=E5=80=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/EXPERIENCES.md | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) 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}/` 顺序不能颠倒。 ---