[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` :默認的表單類型,它的值應該是[http://www.hmoore.net/laowu199/npadmin/2704205#_1](http://www.hmoore.net/laowu199/npadmin/2704205#_1)或自定義類型
`update_elem`:后臺修改操作時的表單類型,如不填寫,默認使用`elem`的類型
表單更多屬性見:[http://www.hmoore.net/laowu199/npadmin/2704205#_34](http://www.hmoore.net/laowu199/npadmin/2704205#_34)
### `table`數組,用于定義當前字段表格相關屬性
...