签入版本
This commit is contained in:
@@ -1,27 +1,55 @@
|
||||
# 10.7 配置文件详解
|
||||
|
||||
:::tip 概述
|
||||
代码生成器通过 `.env` 和 Web 界面配置,主要控制生成行为和默认值。
|
||||
代码生成器通过 `.env` 与 `config/generator.php` 配置菜单挂载、应用名、模板与输出路径;Web 界面配置单次生成的参数。
|
||||
:::
|
||||
|
||||
## .env 配置
|
||||
|
||||
```ini
|
||||
; 代码生成器配置
|
||||
[GENERATOR]
|
||||
; 父菜单ID(生成的菜单挂在此菜单下)
|
||||
; 在菜单管理中查看目标父菜单的 ID
|
||||
PARENT_MENU_ID = 189
|
||||
# 代码生成器配置
|
||||
# 父菜单ID(生成的菜单挂在此菜单下)
|
||||
# 在菜单管理中查看目标父菜单的 ID
|
||||
GENERATOR_PARENT_MENU_ID=189
|
||||
|
||||
; 应用名(路由前缀)
|
||||
; 影响生成的菜单路径和前端目录
|
||||
; 如:tool → /tool/xxx,system → /system/xxx
|
||||
APP_NAME = tool
|
||||
# 应用名(路由前缀、前端目录)
|
||||
# 影响生成的菜单路径和前端目录
|
||||
# 如:tool → 路由 /tool/xxx,前端 ui/src/api/tool/
|
||||
GENERATOR_APP_NAME=tool
|
||||
```
|
||||
|
||||
## config/generator.php(来自项目实际代码)
|
||||
|
||||
```php
|
||||
return [
|
||||
// 主菜单父ID(生成的菜单挂在该父菜单下)
|
||||
// 读取方:GeneratorService::getParentMenuId()
|
||||
'parent_menu_id' => (int) env('GENERATOR_PARENT_MENU_ID', 189),
|
||||
|
||||
// 应用名(路由前缀、前端目录)
|
||||
// 影响范围:路由 path(/{appName}/{module})、前端目录(ui/src/api|views/{appName})
|
||||
'app_name' => env('GENERATOR_APP_NAME', 'tool'),
|
||||
|
||||
// 模板目录(相对于项目根目录)
|
||||
'template_dir' => 'resources/templates',
|
||||
|
||||
// 后端输出目录:模板文件 => 目标路径({ClassName} 会被替换为模型类名)
|
||||
'backend_outputs' => [
|
||||
'model.php.tpl' => 'app/Models/{ClassName}.php',
|
||||
'service.php.tpl' => 'app/Services/{ClassName}Service.php',
|
||||
'controller.php.tpl' => 'app/Http/Controllers/Api/{ClassName}Controller.php',
|
||||
'request.php.tpl' => 'app/Http/Requests/{ClassName}Request.php',
|
||||
],
|
||||
];
|
||||
```
|
||||
|
||||
:::tip 前端输出路径
|
||||
前端输出路径(`ui/src/api|views/{app_name}/{module}`)在 `GeneratorLogic` 中按 `app_name` 与模块名拼接,不在 `backend_outputs` 配置中。
|
||||
:::
|
||||
|
||||
## Web 界面配置
|
||||
|
||||
通过「工具管理 → 代码生成」页面配置:
|
||||
通过「开发工具 → 代码生成」页面配置:
|
||||
|
||||
| 配置项 | 说明 | 默认值 |
|
||||
|--------|------|--------|
|
||||
@@ -29,19 +57,18 @@ APP_NAME = tool
|
||||
| 模块名 | 生成的模块名(影响路由前缀和前端目录) | 表名去掉前缀 |
|
||||
| 功能名 | 功能中文名称(用于注释和菜单标题) | 表注释 |
|
||||
| 作者 | 代码注释中的作者 | admin |
|
||||
| 包名 | 生成文件的命名空间 | app |
|
||||
| 是否导入导出 | 是否生成 import/export 方法 | 是 |
|
||||
| 树形结构 | 是否使用树形模板(需有 parent_id 字段) | 否 |
|
||||
| 上级菜单 | 生成菜单挂载到的父菜单 | 由 PARENT_MENU_ID 决定 |
|
||||
| 上级菜单 | 生成菜单挂载到的父菜单 | 由 `GENERATOR_PARENT_MENU_ID` 决定 |
|
||||
|
||||
## 生成的文件路径
|
||||
|
||||
| 文件 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| Controller | `app/controller/{Name}Controller.php` | 控制器 |
|
||||
| Logic | `app/logic/{Name}Logic.php` | 业务逻辑 |
|
||||
| Model | `app/model/{Name}.php` | 数据模型 |
|
||||
| Validate | `app/validate/{Name}Validate.php` | 验证器 |
|
||||
| Model | `app/Models/{Name}.php` | 数据模型 |
|
||||
| FormRequest | `app/Http/Requests/{Name}Request.php` | 参数验证 |
|
||||
| Service | `app/Services/{Name}Service.php` | 业务服务 |
|
||||
| Controller | `app/Http/Controllers/Api/{Name}Controller.php` | 控制器 |
|
||||
| API | `ui/src/api/{app}/{name}.ts` | 前端 API |
|
||||
| 列表页 | `ui/src/views/{app}/{name}/index.vue` | 列表页 |
|
||||
| 编辑弹窗 | `ui/src/views/{app}/{name}/edit.vue` | 编辑弹窗 |
|
||||
@@ -49,19 +76,19 @@ APP_NAME = tool
|
||||
| 表格列配置 | `ui/src/views/{app}/{name}/columns.ts` | 表格列定义(仅 ui/ 模板) |
|
||||
| 查询表单配置 | `ui/src/views/{app}/{name}/querySchemas.ts` | 搜索表单定义(仅 ui/ 模板) |
|
||||
|
||||
## 自动生成的 Logic 属性
|
||||
## 自动生成的 Service 属性
|
||||
|
||||
代码生成器会根据表结构自动分析并生成以下 Logic 属性:
|
||||
代码生成器会根据表结构自动分析并生成以下属性:
|
||||
|
||||
| 属性 | 生成条件 | 说明 |
|
||||
|------|----------|------|
|
||||
| `$fileFields` | 字段名含 image/avatar/photo/pic 等且类型为 varchar | 文件/图片字段,自动迁移临时文件并补全 URL |
|
||||
| `$fileFields` | 字段名含 image/avatar/photo/pic 等且类型为 varchar | 文件/图片字段,需 `use HasFileProcessing` |
|
||||
| `$fileSaveDir` | 有 `$fileFields` 时生成 | 文件上传子目录 |
|
||||
| `$contentFields` | 字段名含 content/body/description 且类型为 text | 富文本字段,自动处理临时文件和图片占位符 |
|
||||
| `$pageLikeFields` | 字段名含 name/title/keyword 且类型为 varchar | 模糊搜索字段,分页查询时 LIKE 匹配 |
|
||||
| `$pageEqFields` | 字段名含 status/type/group 且类型为 int | 精确匹配字段,分页查询时等值过滤 |
|
||||
| `$uniqueFields` | 字段有 UNIQUE 索引 | 唯一性校验字段,新增/修改时自动校验 |
|
||||
| `$serializeMaps` | 字段有选项(choices)时自动生成 | 枚举显示名映射,查询时自动补 `{字段名}Text` |
|
||||
| `$contentFields` | 字段名含 content/body/description 且类型为 text | 富文本字段,`[IMG_URL]` 占位处理 |
|
||||
| `$pageLikeFields` | 字段名含 name/title/keyword 且类型为 varchar | 模糊搜索字段 |
|
||||
| `$pageEqFields` | 字段名含 status/type/group 且类型为 int | 精确匹配字段 |
|
||||
| `$uniqueFields` | 字段有 UNIQUE 索引 | 唯一性校验字段 |
|
||||
| `$serializeMaps` | 字段有选项(choices)时自动生成 | 枚举显示名映射 |
|
||||
| `$treeParentField` | 表含 parent_id 或 pid 字段 | 树形结构父级字段 |
|
||||
| `$treeLikeField` | 树形结构时生成 | 树形查询模糊搜索字段 |
|
||||
|
||||
@@ -72,7 +99,7 @@ APP_NAME = tool
|
||||
1. **自动生成 `$serializeMaps` 映射**
|
||||
|
||||
```php
|
||||
// 示例:字段 status 有选项(0=正常, 1=禁用)
|
||||
// 示例:字段 status 有选项(1=在用, 2=停用)
|
||||
protected array $serializeMaps = [
|
||||
'status' => 'example_status', // 字典编码 = {模块名}_{字段名}
|
||||
];
|
||||
@@ -80,30 +107,32 @@ APP_NAME = tool
|
||||
|
||||
2. **自动创建字典数据**
|
||||
|
||||
在 `think_dict` 和 `think_dict_item` 表中自动创建对应记录:
|
||||
在 `laravel_dict` 和 `laravel_dict_item` 表中自动创建对应记录:
|
||||
|
||||
| 表 | 字段 | 值 |
|
||||
|----|------|------|
|
||||
| think_dict | name | 案例-状态 |
|
||||
| think_dict | code | example_status |
|
||||
| think_dict_item | name / value | 正常 / 0,禁用 / 1 |
|
||||
| laravel_dict | name | 案例-状态 |
|
||||
| laravel_dict | code | example_status |
|
||||
| laravel_dict_item | name / value | 在用 / 1,停用 / 2 |
|
||||
|
||||
3. **查询时自动翻译**
|
||||
|
||||
`BaseLogic::processSerializeMaps()` 在查询结果中自动补 `statusText` 字段,值为字典翻译后的文本。
|
||||
`HasSerializeMaps` 在查询结果中自动补 `statusText` 字段,值为字典翻译后的文本。
|
||||
|
||||
:::info 幂等性
|
||||
字典创建是幂等的:如果 `think_dict` 中已存在相同 `code` 的记录,会自动跳过,不会重复创建。
|
||||
字典创建是幂等的:如果 `laravel_dict` 中已存在相同 `code` 的记录,会自动跳过,不会重复创建。
|
||||
:::
|
||||
|
||||
## 配置影响总结
|
||||
|
||||
| 配置项 | 影响范围 |
|
||||
|--------|----------|
|
||||
| `GENERATOR.PARENT_MENU_ID` | 生成的菜单挂载位置 |
|
||||
| `GENERATOR.APP_NAME` | 菜单路径、前端目录、API 路径、路由前缀 |
|
||||
| 是否导入导出 | Controller 中是否生成 import/export 方法,Logic 中是否生成对应方法 |
|
||||
| 树形结构 | 使用 ui/ 还是 ui2/ 模板,Controller 中是否生成 page 方法 |
|
||||
| `GENERATOR_PARENT_MENU_ID` | 生成的菜单挂载位置 |
|
||||
| `GENERATOR_APP_NAME` | 菜单路径、前端目录、API 路径、路由前缀 |
|
||||
| `config/generator.php → backend_outputs` | 后端文件的输出路径映射 |
|
||||
| `config/generator.php → template_dir` | 模板目录位置 |
|
||||
| 是否导入导出 | Controller/Service 中是否生成 import/export 方法 |
|
||||
| 树形结构 | 使用 ui/ 还是 ui2/ 模板 |
|
||||
|
||||
## 相关文档
|
||||
|
||||
|
||||
Reference in New Issue
Block a user