md 生成目录 码云_README.md · yunjuji/yunjuji-generator - Gitee.com

吕天逸
2023-12-01

Yunjuji Generator

***

# github或者码云上拉取目录使用说明

## 目录说明

- model.csv【字段信息文件, 和你的实体同级,必须】【具体规则参考 `csv说明` 】

- model.json【自己的命名空间, 和实体同级,必须】【具体规则参考 `model.json文件`】

- filter.json【过滤字段文件, 和你的实体同级,非必须】【具体规则参考 `过滤字段json文件`】

- namespace_model_mapping.json【命名空间映射关系,一个项目只需要一个,放在根目录, 非必须】【具体参考 `命名空间映射json文件`】

## csv说明

### 注意点

1. 多个字段之间统一用 `;` 分隔, 最后一个字段不要加 `;`。

2. `created_at`, `updated_at`, `id` 字段默认添加, 不需要重新指定。

3. `fields` , `foriegns` , `inForms` 等所有属性可以不按顺序, 并且可以根据实际情况选填。比如没有关联关系的模型 `relations` 属性就没有。

4. 所有的例子以 [媒资点播类资产](http://git.oschina.net/hzyrrjjsyxgs/ott/tree/master/model/entity/asset/video/vasset)为例

### 字段详情

1. fields-字段列表

1. **说明:**fields:【字段】【格式:字段名:字段别名;】

vasset_no: 视频编号; name: 名称; title: 标题; subtitle: 副标题; spell: 拼音; short_desc: 简述; long_desc: 详述; score: 评分; expiring_at: 失效日期; online_at: 上线日期; offline_at: 下线日期; published_at: 发布日期; season: 第几季; episode: 共几集; latest: 最近更新

2. foriegns-外键

1. **说明:**foriegns:【外键】【格式:字段名:表名(注意一般的表名都是下划线命名法, 并且加s), 映射字段名(如果相同可以省略);】

vcat_no: vcats; vseason_no: vseasons, vseason_no; vyearcat_no: vyearcats; vareacat_no: vareacats; vareacat_no: vareacats; vlangcat_no: vlangcats

3. tags-关联关系

1. **说明:**tags:【标签】【格式:模型名(大写,没s), 中间表名, 映射关系】

"mtm,Role,user_roles,user_id,role_id"【设计有问题】

4. relations-关联关系

1. **说明:**relations:【关联关系】【格式: 关联关系类型(1t1:一对一, 1tm:一对多, mt1:反向一对多, m2m:多对多, hmt:远程一对多, mht:多态关联, mhm, mhtm, mhbm), 模型名(大写, 没s), 映射关系(具体分析)】

"1tm,Writer,writer_id,id"【设计有问题】

5. query【暂不处理】

6. sortby【暂不处理】

7. inForms-是否在form中显示

1. **说明:**inForms: 【需要在编辑form里面显示的字段】【格式:字段名;】

vasset_no;name;title;subtitle;spell;short_desc;long_desc;score;expiring_at;online_at;offline_at;published_at;season;episode;latest

8. inIndexs-是否在table中显示

1. **说明:**inIndexs:【是否需要在表格里面显示字段】【格式:字段名;】

vasset_no;name;title;subtitle;spell;short_desc;long_desc;score;expiring_at;online_at;offline_at;published_at;season;episode;latest

9. validations-校验

1. **说明:**validations:【校验】【格式:字段名:校验规格(多个校验规则用|);】

vasset_no:required|max:100;name:required;title:required;subtitle:required;spell:required

10. htmlTypes-表单控件

1. **说明:**htmlTypes:【控件类型】【格式:字段名:控件类型 】

vasset_no:text;name:text;title:text;subtitle:text;spell:text;short_desc:text;long_desc:textarea;score:number;expiring_at:datetime;online_at:datetime;offline_at:datetime;published_at:datetime;season:text;episode:text;latest:text

11. dbTypes-数据库字段类型

1. **说明:**dbTypes:【数据库字段类型】【格式:字段名:字段类型,字段长度(可选, 如果没有长度则 `,` 和 字段长度都可以不要);】

vasset_no:string, 100;name:string, 100;title:string, 100;subtitle:string, 100;spell:string, 100;short_desc:string, 100; long_desc:text; score: decimal,10,2; expiring_at: timestamp;online_at: timestamp;offline_at:timestamp;published_at:timestamp;season:string, 10;episode:string, 10;latest:string, 10

12. nullables-能否为null

1. **说明:**nullables:【能否为null】【格式:字段名;】

score;expiring_at;online_at;offline_at;published_at;season;episode;latest

13. indexs-是否为索引

1. **说明:**indexs:【索引】【格式:字段名;(复合索引目前没考虑)】

vasset_no;name;title;subtitle;spell;short_desc;long_desc;score

## json文件说明

### model.json文件

- 格式说明:#

- json格式:整个文件是一个`{}`

- 参数说明

- model_name:模型名(首字母大写)

- perfix_name:目录结构

- title:模型的中文名

- 例子

```

{

"model_name": "Vseriali",

"prefix_name":"Entity\\Asset\\Video",

"title": "分集"

}

```

### 过滤字段json文件

- 格式说明:#

- json格式. 整个文件是一个 `[]`

- 参数说明

- label-标题

- name-字段名

- operator-操作符

- equal: 等于

- notEqual: 不等于

- like: 模糊匹配

- ilike: 不区分大小写

- gt: 大于

- lt: 小于

- between: 范围(可以跟 `time` 或 `datetime` 等控件连用)

- in: 某个范围内(和 `multipleSelect` 控件连用)

- notIn: 不在某个范围(和 `multipleSelect` 控件连用)

- date: date

- month: month

- year: year

- where: 就需要自己写了(现在不支持这个)

- htmlType-控件类型

- select: 下拉框

- multipleSelect: 多选(一般用来配合in和notIn两个需要查询数组的查询类型使用,也可以在where类型的查询中使用)

- datetime: 日期

- date: 作用和下列代码类似, $filter->equal('column')->datetime(['format' => 'YYYY-MM-DD'])

- time: 作用和下列代码类似, $filter->equal('column')->datetime(['format' => 'HH:mm:ss'])

- day: 作用和下列代码类似, $filter->equal('column')->datetime(['format' => 'DD'])

- month: 作用和下列代码类似, $filter->equal('column')->datetime(['format' => 'MM'])

- year: 作用和下列代码类似, $filter->equal('column')->datetime(['format' => 'YYYY'])

- 例子

```

[{

"label": "内容模板类型名称",

"name": "name",

"operator": "like",

"htmlType": ""

}, {

"label": "内容模板类型别名",

"name": "alias",

"operator": "equal",

"htmlType": ""

}, {

"label": "模板类型",

"name": "content_template_type_id",

"operator": "in",

"htmlType": "select"

}, {

"label": "创建时间",

"name": "created_at",

"operator": "between",

"htmlType": "datetime"

}]

```

### 命名空间映射json文件

- 格式说明#

- json格式. `key-value` 形式, `key` 表示 `模型名`, `value` 表示 `命名空间`, 整个文件是一个 `{}`

- 参数说明

- 参数: 无.

- 例子

```

{

"ContentTemplateType": "App\\Models\\Operation\\ContentTemplateType"

}

```

### 字段json文件【不需要看这个】

- 格式说明:#

- json格式. 整个文件是一个 `[]`

- 参数说明

- name-字段名, string

- label-表单label, string

- title-表格title, string

- dbType-数据库类型, string, [支持的所有字段类型, 请参考该链接#](https://d.laravel-china.org/docs/5.5/migrations#创建字段)

- htmlType-控件类型, string, [支持的所有控件类型, 请参考该链接#](http://laravel-admin.org/docs/#/zh/model-form-fields)

- validations-校验, string, [支持的所有验证规则, 请参考该链接#](https://d.laravel-china.org/docs/5.5/validation#available-validation-rules)

- relation-关联关系, string, [支持的所模型关联关系, 请参考该链接#](https://d.laravel-china.org/docs/5.5/eloquent-relationships)

- displayField-表格里面显示关联关系的字段值, string, 格式:模型名+key+value

- fillable-是否支持批量操作, bool

- primary-是否为主键, bool

- inForm-是否在表单里面显示, bool

- inIndex-是否在表格里显示, bool

- options-扩展的参数, string

- searchable-可搜索的字段【目前没用】

- 例子

```

[{

"name": "id",

"dbType": "increments",

"htmlType": "",

"validations": "",

"searchable": false,

"fillable": false,

"primary": true,

"inForm": false,

"inIndex": false

}, {

"label": "内容模板编号",

"title": "内容模板编号",

"name": "template_no",

"dbType": "string,100:nullable:index",

"validations": "required|unique:content_templates,template_no|max:100",

"htmlType": "text"

}, {

"label": "内容模板名称",

"title": "内容模板名称",

"name": "name",

"dbType": "string,100",

"validations": "required|max:100",

"htmlType": "text"

}, {

"label": "模板别名",

"title": "模板别名",

"name": "alias",

"dbType": "string,100",

"validations": "required|max:100",

"htmlType": "text"

}, {

"label": "模板类型",

"title": "模板类型",

"name": "content_template_type_id",

"dbType": "integer:unsigned:foreign,content_template_types,id",

"validations": "required",

"htmlType": "select",

"relation": "1t1,ContentTemplateType,id,content_template_type_id",

"displayField": "ContentTemplateType,id,alias"

}, {

"label": "描述",

"title": "别名",

"name": "description",

"dbType": "text",

"htmlType": "textarea"

}, {

"label": "排序",

"title": "排序",

"name": "listorder",

"dbType": "integer",

"validations": "required",

"htmlType": "number"

}, {

"name": "created_at",

"dbType": "timestamp",

"htmlType": "",

"validations": "",

"searchable": false,

"fillable": false,

"primary": false,

"inForm": false,

"inIndex": false

}, {

"name": "updated_at",

"dbType": "timestamp",

"htmlType": "",

"validations": "",

"searchable": false,

"fillable": false,

"primary": false,

"inForm": false,

"inIndex": false

}]

```

# 安装

## 安装自动产生的依赖

- 在 `composer.json` 中引入

```

"infyomlabs/laravel-generator": "5.5.x-dev",

"laravelcollective/html": "^5.5.0",

"infyomlabs/adminlte-templates": "5.5.x-dev",

"infyomlabs/swagger-generator": "dev-master",

"jlapp/swaggervel": "dev-master",

"doctrine/dbal": "~2.3"

```

- 执行 `composer update`

- 在 `config/app.php` 的 `providers` 加入

```

Collective\Html\HtmlServiceProvider::class,

Laracasts\Flash\FlashServiceProvider::class,

Prettus\Repository\Providers\RepositoryServiceProvider::class,

\InfyOm\Generator\InfyOmGeneratorServiceProvider::class,

\InfyOm\AdminLTETemplates\AdminLTETemplatesServiceProvider::class,

```

- 在 `config/app.php` 的 `aliases` 加入

```

'Form' => Collective\Html\FormFacade::class,

'Html' => Collective\Html\HtmlFacade::class,

'Flash' => Laracasts\Flash\Flash::class,

```

- 依次执行

```

php artisan vendor:publish

php artisan infyom:publish

php artisan infyom.publish:layout

```

## 引入自定义路由

- 在 `app/routes` 目录下面新建 `web` 文件夹

- 在 `app/Providers/RouteServiceProvider.php` 的 `map()` 函数中加入

```

// tian add `mapCustomRoutes`

$this->mapCustomRoutes();

```

- 在 `app/Providers/RouteServiceProvider.php` 加入下面两个函数

```

/**

* tian add

* Define the "Custom" routes for the application.

*

* These routes all receive session state, CSRF protection, etc.

*

* @return void

*/

protected function mapCustomRoutes()

{

/**

* 加载 routes/web 文件夹下的路由

*/

Route::group([

'middleware' => ['web', 'admin', 'admin.bootstrap', 'admin.pjax', 'admin.log', 'admin.bootstrap', 'admin.permission'], // `laravel-admin` 有的中间件 'admin.auth', 'admin.pjax', 'admin.log', 'admin.bootstrap', 'admin.permission'

'namespace' => 'App\Http\Controllers',

'prefix' => 'admin',

], function ($router) {

// Route::group(['middleware' => ['auth:' . config('inventory.base.guard'), 'menu', 'authAdmin']], function () {

$routePath = dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . 'routes' . DIRECTORY_SEPARATOR . 'web';

$this->getFilePath($routePath);

// });

});

}

/**

* [getFilePath 递归遍历文件]

* @param string $path [description]

* @return [type] [description]

*/

protected function getFilePath($path = '.')

{

// opendir()返回一个目录句柄,失败返回false

$current_dir = opendir($path);

// readdir()返回打开目录句柄中的一个条目

while (($file = readdir($current_dir)) !== false) {

// 构建子目录路径

$sub_dir = $path . DIRECTORY_SEPARATOR . $file;

if ($file == '.' || $file == '..') {

continue;

// 如果是目录,进行递归

} else if (is_dir($sub_dir)) {

// echo $sub_dir . '
';

$this->getFilePath($sub_dir);

} else {

// 如果是文件,直接输出

$path = substr($path, strrpos($path, 'routes'));

// echo base_path($path . DIRECTORY_SEPARATOR . $file) . '
';

require base_path($path . DIRECTORY_SEPARATOR . $file);

}

}

}

```

## 安装 `laravel-admin`

首先确保安装好了 `laravel`,并且数据库连接设置正确。

```

composer require encore/laravel-admin "1.5.*"

```

然后运行下面的命令来发布资源:

```

php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"

```

在该命令会生成配置文件 `config/admin.php`,可以在里面修改安装的地址、数据库连接、以及表名,建议都是用默认配置不修改。

生成如下文件:

```

Copied Directory [\vendor\encore\laravel-admin\config] To [\config]

Copied Directory [\vendor\encore\laravel-admin\resources\lang] To [\resources\la

ng]

Copied Directory [\vendor\encore\laravel-admin\database\migrations] To [\databas

e\migrations]

Copied Directory [\vendor\encore\laravel-admin\resources\assets] To [\public\ven

dor\laravel-admin]

Publishing complete.

```

建议将 `config/admin.php` 里面的 `database` 部分的表名添加 `laravel_` 前缀. 一共九张表.

然后运行下面的命令完成安装:

```

php artisan admin:install

```

生成的文件:

```

Migrating: 2016_01_04_173148_create_admin_tables

Migrated: 2016_01_04_173148_create_admin_tables

Admin directory was created: \app\Admin

HomeController file was created: \app\Admin/Controllers/HomeController.php

ExampleController file was created: \app\Admin/Controllers/ExampleController.php

Bootstrap file was created: \app\Admin/bootstrap.php

Routes file was created: \app\Admin/routes.php

```

## 正式安装 `yunjuji/yunjuji-generator`

- 开发阶段使用下面命令

```

composer require yunjuji/yunjuji-generator:dev-dev --prefer-source

```

- 卸载

`composer remove yunjuji/yunjuji-generator`

# 使用

## 生成脚手架(cms), 使用下面命令

### 生成 `laravel-admin` 模板(下面给的是例子, 安装完成之后执行下列命令是ok的)

- 基本

`php artisan yunjuji:scaffold ContentTemplateType --fieldsFile=./vendor/yunjuji/yunjuji-generator/samples/content_template_type.json --datatables=true --formMode=laravel-admin --prefix=Operation`

- 如果有引用模型,则需要添加模型的 `命令空间映射` 选项(`namespaceModelMappingFile`)

`php artisan yunjuji:scaffold ContentTemplate --fieldsFile=./vendor/yunjuji/yunjuji-generator/samples/content_template.json --namespaceModelMappingFile=./vendor/yunjuji/yunjuji-generator/samples/namespace_model_mapping.json --datatables=true --formMode=laravel-admin --prefix=Operation`

- 如果需要自定义过滤区域

`php artisan yunjuji:scaffold ContentTemplate --fieldsFile=./vendor/yunjuji/yunjuji-generator/samples/content_template.json --filterFieldsFile=./vendor/yunjuji/yunjuji-generator/samples/filter.json --namespaceModelMappingFile=./vendor/yunjuji/yunjuji-generator/samples/namespace_model_mapping.json --datatables=true --formMode=laravel-admin --prefix=Operation`

### 生成 `datatables` 模板

- `php artisan yunjuji:scaffold posts --fieldsFile=./vendor/yunjuji/yunjuji-generator/samples/fields_sample.json --paginate=20 --datatables=true --prefix=v1`

# 参数说明

## 命令行说明

### yunjuji:generateFieldJson 命令, 批量生成 `field.json`

- 命令说明

- 批量产生 `field.json` , 通过 `model.csv` 文件生成 `fields.json`: `php artisan yunjuji:generateFieldJson $PATH`

- 命令选项说明

- 无

- 命令参数说明

- `$PATH` - 目录的绝对路径

### yunjuji:generate 命令, 批量生成脚手架

- 命令说明

- 批量产生脚手架, 通过遍历目录的 `fields.json` 和 `model.json`: `php artisan yunjuji:generate $PATH $GENERATE_PATH?`

- 命令选项说明

- 无

- 命令参数说明

- `$PATH` - 目录的绝对路径

- `$GENERATE_PATH` - 可选, 生成代码的路径

### yunjuji:rollback命令, 批量回滚

- 命令说明

- 批量回滚, 通过遍历目录的 `fields.json` 和 `model.json`: `php artisan yunjuji:rollback $PATH`

- 命令选项说明

- 无

- 命令参数说明

- `$PATH` - 目录的绝对路径

### infyom:rollback命令, 单个回退

- 命令说明

- 单个脚手架回退: `php artisan infyom:rollback $MODEL_NAME $COMMAND_TYPE`

- 命令选项说明

- `--prefix`: 命名空间前缀

- 命令参数说明

- `$MODEL_NAME` - 模型名

- `$COMMAND_TYPE` - Command type from api, scaffold or api_scaffold

### yunjuji:scaffold命令, 单个脚手架生成

- 命令说明

- 生成脚手架: `php artisan yunjuji:scaffold $MODEL_NAME`

- 命令选项说明

- `--fieldsFile`: 字段文件, 包括 `form`和 `grid`. [字段文件格式说明#](#fields-file)

- `--filterFieldsFile`: 过滤字段文件. [过滤字段文件格式说明#](#filter-fields-file)

- `--namespaceModelMappingFile`: 命名空间映射文件. [命名空间映射文件格式说明#](#namespace-model-mapping-file)

- `--prefix`: 命名空间前缀

- `--generatePath`: 生成代码的路径

- 命令参数说明

- `$MODEL_NAME` - 模型名

### yunjuji:publish命令, 发布

- 命令说明

- 将自动生成的文件发布到指定目录: `php artisan yunjuji:publish $SOURCE_PATH $TARGET_PATH`

- 命令选项说明

- 无

- 命令参数说明

- `$SOURCE_PATH` - 源目录的绝对路径

- `$TARGET_PATH` - 目标目录的绝对路径

### yunjuji:fillData命令, 批量填充数据

- 命令说明

- 批量填充数据: `php artisan yunjuji:fillData $PATH`

- 命令选项说明

- 无

- 命令参数说明

- `$PATH` - 目录的绝对路径

### yunjuji:dropTable命令, 批量删表

- 命令说明

- 批量填充数据: `php artisan yunjuji:dropTable $PATH`

- 命令选项说明

- 无

- 命令参数说明

- `$PATH` - 目录的绝对路径

## csv说明

### 注意点

1. 多个字段之间统一用 `;` 分隔, 最后一个字段不要加 `;`。

2. `created_at`, `updated_at`, `id` 字段默认添加, 不需要重新指定。

3. `fields` , `foriegns` , `inForms` 等所有属性可以不按顺序, 并且可以根据实际情况选填。比如没有关联关系的模型 `relations` 属性就没有。

4. 所有的例子以 [媒资点播类资产](http://git.oschina.net/hzyrrjjsyxgs/ott/tree/master/model/entity/asset/video/vasset)为例

### 字段详情

1. fields-字段列表

1. **说明:**fields:【字段】【格式:字段名:字段别名;】

vasset_no: 视频编号; name: 名称; title: 标题; subtitle: 副标题; spell: 拼音; short_desc: 简述; long_desc: 详述; score: 评分; expiring_at: 失效日期; online_at: 上线日期; offline_at: 下线日期; published_at: 发布日期; season: 第几季; episode: 共几集; latest: 最近更新

2. foriegns-外键

1. **说明:**foriegns:【外键】【格式:字段名:表名(注意一般的表名都是下划线命名法, 并且加s), 映射字段名(如果相同可以省略);】

vcat_no: vcats; vseason_no: vseasons, vseason_no; vyearcat_no: vyearcats; vareacat_no: vareacats; vareacat_no: vareacats; vlangcat_no: vlangcats

3. tags-关联关系

1. **说明:**tags:【标签】【格式:模型名(大写,没s), 中间表名, 映射关系】

"mtm,Role,user_roles,user_id,role_id"【设计有问题】

4. relations-关联关系

1. **说明:**relations:【关联关系】【格式: 关联关系类型(1t1:一对一, 1tm:一对多, mt1:反向一对多, m2m:多对多, hmt:远程一对多, mht:多态关联, mhm, mhtm, mhbm), 模型名(大写, 没s), 映射关系(具体分析)】

"1tm,Writer,writer_id,id"【设计有问题】

5. query【暂不处理】

6. sortby【暂不处理】

7. inForms-是否在form中显示

1. **说明:**inForms: 【需要在编辑form里面显示的字段】【格式:字段名;】

vasset_no;name;title;subtitle;spell;short_desc;long_desc;score;expiring_at;online_at;offline_at;published_at;season;episode;latest

8. inIndexs-是否在table中显示

1. **说明:**inIndexs:【是否需要在表格里面显示字段】【格式:字段名;】

vasset_no;name;title;subtitle;spell;short_desc;long_desc;score;expiring_at;online_at;offline_at;published_at;season;episode;latest

9. validations-校验

1. **说明:**validations:【校验】【格式:字段名:校验规格(多个校验规则用|);】

vasset_no:required|max:100;name:required;title:required;subtitle:required;spell:required

10. htmlTypes-表单控件

1. **说明:**htmlTypes:【控件类型】【格式:字段名:控件类型 】

vasset_no:text;name:text;title:text;subtitle:text;spell:text;short_desc:text;long_desc:textarea;score:number;expiring_at:datetime;online_at:datetime;offline_at:datetime;published_at:datetime;season:text;episode:text;latest:text

11. dbTypes-数据库字段类型

1. **说明:**dbTypes:【数据库字段类型】【格式:字段名:字段类型,字段长度(可选, 如果没有长度则 `,` 和 字段长度都可以不要);】

vasset_no:string, 100;name:string, 100;title:string, 100;subtitle:string, 100;spell:string, 100;short_desc:string, 100; long_desc:text; score: decimal,10,2; expiring_at: timestamp;online_at: timestamp;offline_at:timestamp;published_at:timestamp;season:string, 10;episode:string, 10;latest:string, 10

12. nullables-能否为null

1. **说明:**nullables:【能否为null】【格式:字段名;】

score;expiring_at;online_at;offline_at;published_at;season;episode;latest

13. indexs-是否为索引

1. **说明:**indexs:【索引】【格式:字段名;(复合索引目前没考虑)】

vasset_no;name;title;subtitle;spell;short_desc;long_desc;score

## json文件说明

### 字段json文件

- 格式说明:#

- json格式. 整个文件是一个 `[]`

- 参数说明

- name-字段名, string

- label-表单label, string

- title-表格title, string

- dbType-数据库类型, string, [支持的所有字段类型, 请参考该链接#](https://d.laravel-china.org/docs/5.5/migrations#创建字段)

- htmlType-控件类型, string, [支持的所有控件类型, 请参考该链接#](http://laravel-admin.org/docs/#/zh/model-form-fields)

- validations-校验, string, [支持的所有验证规则, 请参考该链接#](https://d.laravel-china.org/docs/5.5/validation#available-validation-rules)

- relation-关联关系, string, [支持的所模型关联关系, 请参考该链接#](https://d.laravel-china.org/docs/5.5/eloquent-relationships)

- displayField-表格里面显示关联关系的字段值, string, 格式:模型名+key+value

- fillable-是否支持批量操作, bool

- primary-是否为主键, bool

- inForm-是否在表单里面显示, bool

- inIndex-是否在表格里显示, bool

- options-扩展的参数, string

- searchable-可搜索的字段【目前没用】

- 例子

```

[{

"name": "id",

"dbType": "increments",

"htmlType": "",

"validations": "",

"searchable": false,

"fillable": false,

"primary": true,

"inForm": false,

"inIndex": false

}, {

"label": "内容模板编号",

"title": "内容模板编号",

"name": "template_no",

"dbType": "string,100:nullable:index",

"validations": "required|unique:content_templates,template_no|max:100",

"htmlType": "text"

}, {

"label": "内容模板名称",

"title": "内容模板名称",

"name": "name",

"dbType": "string,100",

"validations": "required|max:100",

"htmlType": "text"

}, {

"label": "模板别名",

"title": "模板别名",

"name": "alias",

"dbType": "string,100",

"validations": "required|max:100",

"htmlType": "text"

}, {

"label": "模板类型",

"title": "模板类型",

"name": "content_template_type_id",

"dbType": "integer:unsigned:foreign,content_template_types,id",

"validations": "required",

"htmlType": "select",

"relation": "1t1,ContentTemplateType,id,content_template_type_id",

"displayField": "ContentTemplateType,id,alias"

}, {

"label": "描述",

"title": "别名",

"name": "description",

"dbType": "text",

"htmlType": "textarea"

}, {

"label": "排序",

"title": "排序",

"name": "listorder",

"dbType": "integer",

"validations": "required",

"htmlType": "number"

}, {

"name": "created_at",

"dbType": "timestamp",

"htmlType": "",

"validations": "",

"searchable": false,

"fillable": false,

"primary": false,

"inForm": false,

"inIndex": false

}, {

"name": "updated_at",

"dbType": "timestamp",

"htmlType": "",

"validations": "",

"searchable": false,

"fillable": false,

"primary": false,

"inForm": false,

"inIndex": false

}]

```

### 过滤字段json文件

- 格式说明:#

- json格式. 整个文件是一个 `[]`

- 参数说明

- label-标题

- name-字段名

- operator-操作符

- equal: 等于

- notEqual: 不等于

- like: 模糊匹配

- ilike: 不区分大小写

- gt: 大于

- lt: 小于

- between: 范围(可以跟 `time` 或 `datetime` 等控件连用)

- in: 某个范围内(和 `multipleSelect` 控件连用)

- notIn: 不在某个范围(和 `multipleSelect` 控件连用)

- date: date

- month: month

- year: year

- where: 就需要自己写了(现在不支持这个)

- htmlType-控件类型

- select: 下拉框

- multipleSelect: 多选(一般用来配合in和notIn两个需要查询数组的查询类型使用,也可以在where类型的查询中使用)

- datetime: 日期

- date: 作用和下列代码类似, $filter->equal('column')->datetime(['format' => 'YYYY-MM-DD'])

- time: 作用和下列代码类似, $filter->equal('column')->datetime(['format' => 'HH:mm:ss'])

- day: 作用和下列代码类似, $filter->equal('column')->datetime(['format' => 'DD'])

- month: 作用和下列代码类似, $filter->equal('column')->datetime(['format' => 'MM'])

- year: 作用和下列代码类似, $filter->equal('column')->datetime(['format' => 'YYYY'])

- 例子

```

[{

"label": "内容模板类型名称",

"name": "name",

"operator": "like",

"htmlType": ""

}, {

"label": "内容模板类型别名",

"name": "alias",

"operator": "equal",

"htmlType": ""

}, {

"label": "模板类型",

"name": "content_template_type_id",

"operator": "in",

"htmlType": "select"

}, {

"label": "创建时间",

"name": "created_at",

"operator": "between",

"htmlType": "datetime"

}]

```

### 命名空间映射json文件

- 格式说明#

- json格式. `key-value` 形式, `key` 表示 `模型名`, `value` 表示 `命名空间`, 整个文件是一个 `{}`

- 参数说明

- 参数: 无.

- 例子

```

{

"ContentTemplateType": "App\\Models\\Operation\\ContentTemplateType"

}

```

# 本项目目前支持的能力集

1. 表(migration), 说明:相当于数据库里的表字段的定义, 作用:建表

- 字段类型和长度, 具体支持参考[字段类型](https://d.laravel-china.org/docs/5.5/migrations#创建字段), 里面有的类型都支持

- 支持能否为null

- 索引

- 外键

2. 模型(Models), 说明:表的orm

- 1对1关联, 具体的支持参考[模型关联关系](https://d.laravel-china.org/docs/5.5/eloquent-relationships), 里面有的类型都支持

- 1对多关联

- 反向一对多关联

- 多对多关联

- 远程一对多

- 多态关联

- 多态多对多关联

3. 仓库(Repositories), 说明:对模型的一层封装

- 使用 `prettus/l5-repository` 对模型进行了一层封装, 模型 `新建` 和 `修改` 操作的时候用了,目的是将一些逻辑抽离出来,避免控制器和模型冗余

4. 请求(Requests), 说明:http请求的依赖注入,做一些数据合法性校验(比如: 非空必填, 长度限制等)

- 支持的校验规则参考[可用的验证规则#](https://d.laravel-china.org/docs/5.5/validation#available-validation-rules), 里面有的都支持

5. 路由(routes), 说明:定义uri

- 产生crud的路由,现在会产生8项路由 例子如下:

```

列表:Route::get('entity/column/albums', ['as'=> 'entity.column.albums.index', 'uses' => 'Entity\Column\AlbumController@index']);

保存操作: Route::post('entity/column/albums', ['as'=> 'entity.column.albums.store', 'uses' => 'Entity\Column\AlbumController@store']);

新建视图: Route::get('entity/column/albums/create', ['as'=> 'entity.column.albums.create', 'uses' => 'Entity\Column\AlbumController@create']);

修改操作(全部修改): Route::put('entity/column/albums/{albums}', ['as'=> 'entity.column.albums.update', 'uses' => 'Entity\Column\AlbumController@update']);

修改操作(局部修改): Route::patch('entity/column/albums/{albums}', ['as'=> 'entity.column.albums.update', 'uses' => 'Entity\Column\AlbumController@update']);

删除操作: Route::delete('entity/column/albums/{albums}', ['as'=> 'entity.column.albums.destroy', 'uses' => 'Entity\Column\AlbumController@destroy']);

显示某条记录: Route::get('entity/column/albums/{albums}', ['as'=> 'entity.column.albums.show', 'uses' => 'Entity\Column\AlbumController@show']);

编辑视图: Route::get('entity/column/albums/{albums}/edit', ['as'=> 'entity.column.albums.edit', 'uses' => 'Entity\Column\AlbumController@edit']);

```

6. 控制器(Controllers)

- 基本的curd功能

- 表格(我们基本喜欢叫grid或者table)

- 表单(form)

- 支持的控件类型

- 具体支持的控件类型参考[支持的控件类型](http://laravel-admin.org/docs/#/zh/model-form-fields)

- 批量删除

- 过滤区域

# 本项目目前还在开发的能力集

暂无

一键复制

编辑

Web IDE

原始数据

按行查看

历史

 类似资料: