>[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.hmoore.net/manual/thinkphp5/118007),多級控制器要求目錄名全部小寫,目錄名之間用點隔開,控制器名按照上面要求,例如 `one.two.three.FourFiveSix`,對應 `one/two/three` 目錄下的 `FourFiveSix` 控制器,具體請看 [ThinkPHP5 - 多級控制器](http://www.hmoore.net/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