>[info] 要求 tpadmin 版本 >= v1.2
代码自动生成功能能根据配置信息自动生成一个带添加、编辑、删除、回收站等与数据库对应的 CURD 基本操作,并且自动生成相应的前端、后端数据校验,对任何不合法数据说 No,生成的代码带规范的缩进、注释,方便根据需求二次编辑,也方便团队根据同一套代码规范开发
[TOC]
## 使用前准备
>[info] 代码自动生成有可选项涉及数据表创建,请保证连接数据库的用户有权限对数据表重命名、删除、创建
>[info] 代码自动生成需要对目录有可写权限,请 Linux\Mac OS 系统用户修改相应权限,没有权限时会抛出错误并且给出应使用的命令,由于每个人安装的服务器环境不同,可能权限修改为 755、777 都不好用,可以在生成代码后再次修改代码权限,或者将本地用户加入到 apache、php-fpm、nginx 用户组,Windows 系统没测试过,如果 Windows 系统有问题请留言反馈
## 配置
修改 `extend/Generate.php` 模型里的属性 `$blacklistName` 和 `$blacklistTable` 可以设置控制器和数据表黑名单,不允许创建这些控制器和数据表,防止代码被替换
```
// 控制器黑名单
private $blacklistName = [
'AdminGroup',
'AdminNode',
'AdminNodeLoad',
'AdminRole',
'AdminUser',
'Pub',
'Demo',
'Generate',
'Index',
'LogLogin',
'Ueditor',
'Upload',
'WebLog',
'NodeMap',
'Error',
];
// 数据表黑名单
private $blacklistTable = [
'admin_access',
'admin_group',
'admin_node',
'admin_node_load',
'admin_role',
'admin_role_user',
'admin_user',
'file',
'log_login',
'node_map',
'web_log_001',
'web_log_all',
];
```
修改 `application/admin/extra/generate.php` ,这是生成文件默认的数据,其他地方提交过来的数据都会与它进行合并
```
<?php
/**
* tpAdmin [a web admin based ThinkPHP5]
*
* @author yuan1994 <tianpian0805@gmail.com>
* @link http://tpadmin.yuan1994.com/
* @copyright 2016 yuan1994 all rights reserved.
* @license http://www.apache.org/licenses/LICENSE-2.0
*/
return [
'module' => 'admin',
'menu' => ['add'],
'create_config' => true,
];
```
##开始使用
访问 [http://your.doamin.com/admin/generate](http://tpadmin.demo.tianpian.net.cn/admin/generate)
>[warning] 上线部署时可以修改 admin/controller 目录下的 Generate 类名为 Generate1,只要修改成不是Generate的任何字符都行,或者部署时不要将此控制器部署到线上环境
##使用说明
### 选项
1. 从数据表生成
选择此项并选择有效的数据表后,会根据表字段生成相应表单元素,直接从数据表快速创建 CURD 模型
>[info] 选择此项后默认不会创建数据表,如果在配置文件 `admin/extra/generate.php` 文件中配置了默认生成数据表项会生成数据表,请不要在该配置文件中配置该选项
2. 生成文件
选择此项会根据需要生成相应的文件,默认生成根据页面配置生成的文件,如果选择生成某单一文件,都会自动创建文件夹
### 控制器信息
1. 模块
生成 CURD 模型所在的模块,默认为当前模块
2. 控制器
* 名称
控制器名称必须符合 ThinkPHP5 的控制器命名规范,不分级控制器首字母大写,驼峰式,例如 `AdminGroup`,具体请看 ThinkPHP5 官方文档 [ThinkPHP5 - 开发规范](http://www.kancloud.cn/manual/thinkphp5/118007),多级控制器要求目录名全部小写,目录名之间用点隔开,控制器名按照上面要求,例如 `one.two.three.FourFiveSix`,对应 `one/two/three` 目录下的 `FourFiveSix` 控制器,具体请看 [ThinkPHP5 - 多级控制器](http://www.kancloud.cn/manual/thinkphp5/118054)
* 标题
即控制器的中文名称,例如节点管理,该名称会自动备注到生成的控制器、验证器、模型、数据表、字段中
### 表单信息
1. 操作
可以删除或增加一行数据,表头的 `增加一栏` 增加一栏到第一行,表体部分的 `增加一栏` 按钮到该栏下面,点击 `删除` 后该栏被删除并且不可恢复
2. 标题
生成的列表是一个表格,该中文名称即是表格对应列的列名,添加、编辑页的标签名,数据表字段的字段备注,以及验证器里对应字段的中文名
3. 名称
生成列表表格对应列的字段名,数据表的字段名,验证器里的字段名,添加、编辑页表单控件的 `name` 名称
4. 类型
生成添加、编辑页对应的表单控件,例如 `select`, `input`... 等等,选择 `date` 类型时不是使用的 `input[type='date']` ,而是自动生成的 `input[type='text']` 并且给该控件添加 `DatePicker` 插件
5. 选项值
只有 `类型` 选择的为 `select`, `radio`, `checkbox` 时才有效,为该控件的选项值,支持变量和数值定义,定义为 `{configname}` 表示值为变量,对应的变量为 `extra/conf.php` 里的配置,例如控件为 `radio` ,`extra/conf.php` 里有一条配置为:
```
return [
// 性别配置
'sex' => [
0 => '未填写',
1 => '男' ,
2 => '女'
],
// 节点类型
'node_type' => [
0 => '方法',
1 => '控制器'
],
'select' => [
1 => '值一',
2 => '值二',
3 => '值三',
4 => '值四',
]
];
```
选项值为 `{sex}` ,则自动生成的表单控件就是三个单选按钮,对应的值和标签为 `0 => '未填写', 1 => '男', 2 => '女'`,即 `extra/conf.php` 配置里的 `sex` 为配置分组,里面的键名为对应选择控件的值,值为对应选择控件的标签(label)或文件(text);定义为 `value1:text1#value2:text2#...` 格式化时,会根据 `#` 拆分成分组,`:` 前后拆分成值和标签(文本),例如上例中不在 `extra/conf.php` 里配置 `sex`,直接将选项值设为 `0:未填写#1:男#2:女` ,则生成的表单控件是完全一样的。如果该选项值不填写,则生成控件为一个默认的标签(文本)和对应的空值
6. 默认值
表单控件添加页的默认值,例如将上例中的默认值设为 1,则在添加页性别那个控件会默认选中 男(男对应的值为1)
7. 筛选排序
勾选此项后,列表、回收站页的表头会自动添加一个筛选排序的功能,点击对应表头就可以对其排序
8. 表单搜索
勾选此项后会在列表、回收站页的搜索栏生成相应的搜索控件,并且对应的搜索控件类型是 `input` 类型,还会给该列字段自动添加搜索后关键词高亮功能
9. 搜索类型
搜索栏对应控件的类型,`select` 对应的选项值为字段栏对应的选项值,`date` 生成的表单控件为 `DatePicker` 插件,`input` 类型该列对应的字段后自动添加关键词高亮功能
10. 是否必填
会在前端生成相应的必填 `*` 号提示和正则校验,在验证器里也会相应生成 `require` 校验规则,实现前后端同时校验
11. datatype
`validform` 插件的 `datatype` 属性,可以填写正则或内置的验证规则,此处填写后会在验证器里自动生成验证规则,由于验证规则复杂,验证器里只自动生成 `require` 验证,其他验证规则默认留空,如有需要请到验证器里完善
>[info] `validform` 插件官方地址: [http://validform.rjboy.cn/](http://validform.rjboy.cn/) ,具体文档参考此处
12. nullmsg
`validform` 插件里的 `nullmsg` 属性
13. errormsg
`validform` 插件里的 `errormsg` 属性
### 数据表信息
0. 数据表
* 创建数据表
勾选此项后会自动创建数据表,如果数据表存在,但是未勾选强制建表,不会自动创建数据表
* 强制建表
勾选此项后会强制删除以前的表,无论是否存在,如果遇到异常,会自动还原以前的表
* 表引擎
默认为 `InnoDb`,自己根据需要选择
* 表名
可以指定表名,不包含表名前缀,例如 配置项中默认表名前缀是 `tp`, `AdminGroup` 控制器生成的默认的表名就是 `tp_admin_group`,如果此处填写为 `tpadmin_admin_group`,则生成的表名为 `tpadmin_admin_group`,多级控制器会将目录转为下划线连接,例如 `one.two.ThreeFour` 控制器默认生成不带表名前缀的表名为 `one_two_three_four`
1. 操作
可以删除或增加一行数据,表头的 `增加一栏` 增加一栏到第一行,表体部分的 `增加一栏` 按钮到该栏下面,点击 `删除` 后该栏被删除并且不可恢复
2. 名称
字段名称,小写字母 + 下划线
3. 类型
字段类型,包含字段长度,例如 `char(28)`, `varchar(255)`, `int(10)`,有些字段类型不能指定长度,例如 `text`, `datetime` 等等
4. 默认值
SQL 语句里对应的 DEFAULT 默认值
5. 不是 null
勾选后 SQL 语句里自动生成 NOT NULL
6. 索引
勾选后自动生成普通索引
7. 备注
SQL 语句里对应的 COMMENT 备注
8. 扩展属性
一些不方便指定的属性,例如 `unsigned`, `auto_increment`
### 其他选项
1. 首页菜单
列表首页默认最多会有 5 个功能菜单,勾选禁用、恢复,会默认创建 `status` 字段,勾选删除、回收站会自动创建 `isdelete` 字段,勾选回收站会自动创建回收站,如果不勾选回收站,会将生成的 `th.html, td.html, form.html` 自动合并到 `index.html` 模板文件中
3. 验证器
勾选后自动创建验证器
2. 创建模型
* 创建模型(model)
勾选后会自动创建模型
* 自动时间戳记录
自动在模型开启时间戳写入配置,并且创建数据表时自动加入时间戳 (`create_time`、`update_time` 字段,`int(10) unsigned` 类型)
生成的控制器自动控制假删除与模糊搜索,目录在 controller,生成的模板文件在 view 文件夹下,最多默认生成 `index.html、th.html`、`td.html`、`form.html`、`edit.html`、`recyclebin.html`,其他模板文件的新建请参考这几个模板文件的格式,使用模板继承,提高代码利用率及可维护性
>[danger] 由于官方有些源码不支持tpadmin后台,已做修改,请参考 [概要 - 注意](220267)
- 概要
- 开始使用
- 写在前面
- 目录结构
- 模板主题支持
- 前置方法before支持
- 数据返回
- 异常接管
- Rbac 权限管理
- 开始使用
- 用户管理
- 分组管理
- 节点管理
- 角色管理
- 使用流程
- 其他
- 代码自动生成 v1.2
- 示例一 - 一级控制器
- 示例二 - 多级控制器
- 示例三 - 从数据表生成
- 示例四 - 指定生成的文件
- 示例五 - 命令行模式
- 示例六 - 模拟命令行模式
- 代码自动生成
- 示例一 - 一级控制器
- 示例二 - 多级控制器
- 控制器
- 公共控制器
- traits 多继承 Controller
- 公开不授权控制器
- 其他控制器
- 标签扩展
- 模板
- 网站操作日志
- 节点图
- 行为驱动
- 其他后端方法
- Excel一键导出
- Excel一键导入
- 文件下载
- 邮件发送
- 七牛文件上传
- id加密
- 前端
- ajax请求
- 表单校验
- 丰富弹层
- 异步操作
- 表格溢出
- 随机字符串
- 自动面包屑导航
- 动态加载文件
- 文件上传
- Tab 切换
- 图片预览
- 二维码生成
- 日历组件
- 升级指导
- 更新日志
- FAQ