feat: 实现基本的详情生成

This commit is contained in:
augushong
2026-01-05 22:59:12 +08:00
parent 528ff69897
commit 3fdea8b85b
20 changed files with 1430 additions and 15 deletions

View File

@@ -0,0 +1,134 @@
# CURD详情页面生成功能实现计划
## 1. 需求分析
* 当前CURD生成功能不包含详情页面
* 详情页面需要合理布局:顶部是标题+ID左侧8/12是主体右侧4/12是基础字段
* 详情页面需要包含编辑、删除、返回等基础按钮操作
* 支持后续扩展更多字段
* 使用Layui栅格系统
## 2. 实现步骤
### 2.1 添加详情方法到CURD Trait
*`CurdTraitBase.php` 中添加 `read` 方法
* 实现详情数据获取和页面渲染逻辑
### 2.2 创建详情页面模板
* 创建 `view/read.code` 主模板
* 设计Layui风格布局
* 顶部区域标题、ID和操作按钮编辑、删除、返回
* 内容区域:使用 `layui-row``layui-col-md-*` 实现8/4分栏
* 左侧主体字段8列
* 右侧基础字段4列包含创建时间、更新时间等
### 2.3 修改BuildCurdServiceBase
*`renderView` 方法中添加详情页面生成逻辑
* 实现字段分类:
* 主体字段除ID、创建时间、更新时间外的大部分字段
* 基础字段ID、创建时间、更新时间、状态等系统字段
* 添加详情页面到文件列表
### 2.4 更新JS文件生成
* 修改 `js/index.code` 模板
* 在操作列添加详情按钮
* 实现详情跳转逻辑
### 2.5 更新控制器模板
* 确保控制器支持详情页面路由
## 3. 布局设计Layui风格
```html
<!-- 顶部区域 -->
<div class="layui-card">
<div class="layui-card-header detail-header">
<div class="layui-row">
<div class="layui-col-md9">
<h2 class="detail-title">{{title}}</h2>
<div class="detail-id">ID: {{id}}</div>
</div>
<div class="layui-col-md3 text-right">
<button class="layui-btn layui-btn-primary" onclick="window.history.back()">返回</button>
<button class="layui-btn" onclick="location.href='{{editUrl}}'">编辑</button>
<button class="layui-btn layui-btn-danger" onclick="deleteData({{id}})">删除</button>
</div>
</div>
</div>
<!-- 内容区域 -->
<div class="layui-card-body">
<div class="layui-row detail-content">
<!-- 左侧主体内容8/12 -->
<div class="layui-col-md-8 detail-main">
<div class="layui-form">
<!-- 主体字段展示 -->
</div>
</div>
<!-- 右侧基础信息4/12 -->
<div class="layui-col-md-4 detail-side">
<div class="layui-form">
<!-- 基础字段展示:创建时间、更新时间等 -->
</div>
</div>
</div>
</div>
</div>
```
## 4. 字段分类规则
* **主体字段**:所有非系统字段,如名称、描述、内容等
* **基础字段**
* id
* create_time
* update_time
* status
* 其他系统相关字段
## 5. 实现要点
* 保持与Layui框架风格一致
* 遵循现有代码生成模式
* 支持后续字段扩展
* 确保详情页面与现有功能无缝集成
* 添加必要的JavaScript交互逻辑
## 6. 文件修改清单
1. `extend/base/admin/traits/CurdTraitBase.php` - 添加read方法
2. `extend/base/admin/service/curd/templates/view/read.code` - 详情页面模板
3. `extend/base/admin/service/curd/BuildCurdServiceBase.php` - 添加详情页面生成逻辑
4. `extend/base/admin/service/curd/templates/js/index.code` - 添加详情按钮
5. `extend/base/admin/service/curd/templates/js/read.code` - 详情页面JS逻辑
## 7. 详情页面按钮功能
* **返回**:返回上一页
* **编辑**:跳转到编辑页面
* **删除**:调用删除接口,删除当前数据
* 所有按钮使用Layui样式保持一致的视觉效果

View File

@@ -0,0 +1,168 @@
# Ulthon Admin 项目开发规则
## 1. 框架技术栈
- **核心框架**: ThinkPHP 8.0
- **开发语言**: PHP 8+
- **数据库**: MySQL 8+
- **前端框架**: Layui 2.8.6
- **模板引擎**: ThinkPHP 内置模板引擎
- **代码生成器**: 自定义命令行工具
## 2. 项目架构设计
### 2.1 双层架构设计
Uthon Admin 采用独特的双层架构设计,将系统功能分为核心基础层和业务应用层,便于开发者进行二次开发和功能扩展:
- **基础核心层 (`extend/base/`)**:
- 包含系统内置的所有核心功能代码
- 提供标准化的类和方法接口
- 不可直接修改,确保系统稳定性
- 示例:`extend/base/controller/Base.php``extend/base/model/BaseModel.php`
- **业务应用层 (`application/`)**:
- 基于基础核心层扩展开发的具体业务代码
- 所有业务类必须继承基础核心层的对应类
- 开发者可自由修改和扩展,不会影响核心功能
- 示例:`application/admin/controller/User.php` 继承 `base\controller\Base`
### 2.2 继承重写机制
**注意**:继承重写机制主要针对 ulthon-admin 自身的内置功能(如管理员管理、菜单、权限等),用于扩展或修改框架内置功能。
- 对于 ulthon-admin 内置功能,通过继承基础核心类(位于 `extend/base/`),可以获得内置功能并进行扩展
- 需要修改内置功能时,在业务类中重写对应方法,保持方法签名一致
- 支持调用父类方法:`parent::methodName()`
**用户自定义代码**
- 用户自己的业务代码不需要遵守该继承规则
- 生成的代码直接位于 `application/` 目录下
- 可以直接在 `application/` 目录下进行开发和修改
## 3. 开发流程
### 3.1 标准开发步骤
1. **设计数据库表结构**
- 按照业务需求设计合理的表结构
- 必须为所有字段编写清晰、完整的注释
- 遵循命名规范:表名小写,使用下划线分隔
2. **生成基础代码**
- 使用内置命令行工具生成代码
- 支持生成到临时目录,避免覆盖已定制代码
- 生成内容包括:控制器、模型、视图、验证器、菜单配置
3. **代码定制**
- 基于生成的代码进行业务定制
- 仅修改 `application/` 目录下的文件
- 使用继承重写机制扩展基础功能
4. **测试与验证**
- 测试所有功能是否正常工作
- 确保数据完整性和安全性
- 检查代码规范和性能
### 3.2 代码生成命令
CURD命令大全
ulthon_admin框架以内置快速生成CURD的命令, 包括控制器、视图、模型、JS文件。能够使开发者效率得到进一步提升。
> 备注在进行CURD命令行之前, 请按照规范设计表结构, 请参考表结构规范模块说明。
**常用命令**
```
# 生成ul_test_goods表的CURD
php think curd -t test_goods
# 生成ul_test_goods表的CURD到临时目录
php think curd -t test_goods -r
# 生成ul_test_goods表的CURD, 文件冲突时强制覆盖
php think curd -t test_goods -f
# 删除ul_test_goods表的CURD
php think curd -t test_goods -d
# 生成ul_test_goods表的CURD, 控制器在目录demo下的Goods.php文件
# 原路径: `controller\text\Goods.php`
# 此时路径:`controller\demo\Goods.php`
# 不建议指定该参数
php think curd -t test_goods -c demo/Goods
# 生成ul_test_goods表的CURD, 模型在目录demo下的Goods.php文件
# 原路径: `model\MallCate.php`
# 此时路径: `model\demo\Goods.php`
# 不建议指定该参数
php think curd -t test_goods -m demo/Goods
```
**参数介绍**
| 短参 | 长参 |说明|
| ------------ | ------------ | ------|
| -t | `--table=VALUE` | 主表名 |
| -c | `--controllerFilename=VALUE` | 控制器文件名 |
|-m| `--modelFilename=VALUE` |主表模型文件名|
|-f| `--force`|强制覆盖模式 |
|-d| `--delete`|删除模式 |
|-r |`--runtime`|生成到临时目录|
**官方命令行文档**: [https://doc.ulthon.com/read/augushong/ulthon_admin/619efc929565f/zh-cn/2.x.html](https://doc.ulthon.com/read/augushong/ulthon_admin/619efc929565f/zh-cn/2.x.html)
**CURD 文档地址**: [https://doc.ulthon.com/read/augushong/ulthon_admin/619efc816472e/zh-cn/2.x.html](https://doc.ulthon.com/read/augushong/ulthon_admin/619efc816472e/zh-cn/2.x.html)
### 3.3 表结构设计规范
**官方表结构规范文档**: [https://doc.ulthon.com/read/augushong/ulthon_admin/619efc9d7af62/zh-cn/2.x.html](https://doc.ulthon.com/read/augushong/ulthon_admin/619efc9d7af62/zh-cn/2.x.html)
> 以官方在线文档为准,包含详细的表结构设计规范,包括表名规则、特殊字段、数据类型定义等。
## 4. 命名规范
**官方命名规范文档**: [https://doc.ulthon.com/read/augushong/ulthon_admin/64fbcf8830640/zh-cn/2.x.html](https://doc.ulthon.com/read/augushong/ulthon_admin/64fbcf8830640/zh-cn/2.x.html)
> 以官方在线文档为准,包含详细的命名规范说明。
## 5. 代码规范
**官方代码规范文档**: [https://doc.ulthon.com/read/augushong/ulthon_admin/64360c249d66a/zh-cn/2.x.html](https://doc.ulthon.com/read/augushong/ulthon_admin/64360c249d66a/zh-cn/2.x.html)
> 以官方在线文档为准,包含 PHP-CS-Fixer 配置和详细的代码规范说明。
### 5.1 前端文件组织规范
**视图与JS文件对应规则**后台的所有视图每个HTML文件都会搭配一个对应的JS文件文件结构示例
```
goods
├─ add.html
├─ add.js
├─ edit.html
├─ edit.js
├─ index.html
├─ index.js
├─ read.html
├─ read.js
└─ _common.js
```
- 每个功能页面的HTML和JS文件名保持一致
- `_common.js` 用于存放该模块通用的JS代码
- JS文件中应包含对应页面的业务逻辑、事件绑定等
- 这种结构便于维护和扩展,确保前端代码的组织性
## 7. 二次开发注意事项
- 不要修改 `extend/base/` 目录下的任何文件
- 所有业务逻辑都应放在 `application/` 目录下
- 扩展功能时优先考虑继承重写机制
- 保持代码结构清晰,便于维护
- 定期备份代码和数据库
- 遵循版本控制规范,提交信息清晰
---
以上规则是 Ulthon Admin 项目开发的基本规范,所有开发者必须严格遵守。遵循这些规则可以提高代码质量,减少开发成本,便于系统维护和扩展。