[TOC]
## 示例
~~~
$this->fieldsRule = [
'id' => [
'type' => 'int',// 入库时候自动处理格式
'label' => 'ID',
'form' => [ // 表单相关配置
'elem' => 'hidden',// 默认表单类型
'update_elem' => 'hidden', // 修改时表单类型 如果没有默认使用elem
],
'table' => [],// 表格相关配置
],
'username' => [
'type' => 'string',
'label' => '用户名',
'filter' => 'trim',// 入库前的数据回调处理 支持函数 模型方法 匿名函数
'form' => [
'elem' => 'text'
],
],
'password' => [
'type' => 'string',
'label' => '密码',
'filter' => function($value) {
return md5($value);
},
'form' => [
'elem' => 'password'
],
],
'sex' => [
'type' => 'string',
'label' => '性别',
'form' => [
'elem' => 'radio',
'options' => [
'nan' => '男',
'nv' => '女',
'bm' => '保密'
]
],
],
'create_time' => [
'type' => 'int',
'label' => '创建日期',
'form' => [
'elem' => 0
],
],
'update_time' => [
'type' => 'int',
'label' => '修改日期',
'form' => [
'elem' => 0
],
]
];
~~~
格式:`字段` => 字段属性数组
用于利用模型自定生成表单、列表等的规则定义。
## 字段属性
### `label` 用于定义字段的人类可认名称
### `type` 用于定义模型数据入库前的自动转换规则
目前支持的`type`值和数据转换规则,如下:
`string`:默认,入库前自动使用`strip_tag`函数过滤字段值
`text`:同`string`
`integer`、`int`:入库前自动使用`intval`函数过滤字段值
`double`、`float`:入库前自动使用`floatval`函数过滤字段值
`time`:入库前自动使用`strtotime`函数过滤字段值;用于`date`、`datetime`时值自动转换为时间戳存储
`blob`:入库前自动使用`gzcompress`函数过滤字段值
`blob.array`:入库前自动使用`gzcompress(serialize(值))`函数过滤字段值
`html`:暂无进行任何处理,富文本字段要用它,不然默认是`string`会把你html标签结构过滤掉
`array`:入库前自动使用`json_encode`函数将数组类型值转换为json字符串存储
如需更多规则,可以自行在`app\common\model\traits\Event.php`文件中的`beforeValidate`方法中自行加,代码你们一看就秒懂。
**注:** 如入库的字段没有在`fieldsRule`中定义,不会自动进行任何的过滤处理。
### `filter` 用于定义模型数据入库前的自定义过滤处理
如果`type`不足的地方,可以采用filter自定义入库前的回调过滤处理。
`filter`支持的3种方式:
1、简单函数名(可以是php内置函数名,也可以是自定义函数名)字符串,该函数只支持接收一个参数,比如填trim:用于入库前去除前后空格
2、模型方法名,会将当前值和所有字段数据都传给你,你的返回值就是该字段入库的值
3、匿名函数,会将当前值和所有字段数据都传给你,你的返回值就是该字段入库的值
### `form` 数组,用于定义当前字段表单相关属性
`form`下可以定义的表单属性:
`elem` :默认的表单类型,它的值应该是[https://www.kancloud.cn/laowu199/npadmin/2704205#_1](https://www.kancloud.cn/laowu199/npadmin/2704205#_1)或自定义类型
`update_elem`:后台修改操作时的表单类型,如不填写,默认使用`elem`的类型
表单更多属性见:[https://www.kancloud.cn/laowu199/npadmin/2704205#_34](https://www.kancloud.cn/laowu199/npadmin/2704205#_34)
### `table`数组,用于定义当前字段表格相关属性
...