6.17 自动完成
匿名 · 更新于 2013/12/25
在Model类定义 $_auto 属性,可以完成数据自动处理功能,用来处理默认值、数据过滤以及其他系统写入字段。$_auto属性是由多个填充因子组成的数组。
填充因子格式:
填充因子格式:
array(填充字段,填充内容,[填充条件,附加规则])
1
说明
| 填充字段 | 必须 | 就是需要进行处理的表单字段,这个字段不一定是数据库字段,也可以是表单的一些辅助字段,例如确认密码和验证码等等。 |
| 填充规则 | 必须 | 配合附加规则完成 |
| 填充时间 | 可选 | 包括: Model:: MODEL_INSERT或者1 新增数据的时候处理(默认) Model:: MODEL_UPDATE或者2更新数据的时候处理 Model:: MODEL_BOTH或者3所有情况都进行处理 |
| 附加规则 | 可选 | 包括: function :使用函数,表示填充的内容是一个函数名 callback :回调方法 ,表示填充的内容是一个当前模型的方法 field :用其它字段填充,表示填充的内容是一个其他字段的值 ignore :为空则忽略,3.1.2版本开始支持,如果该字段的值恒等于空字符串则忽略该字段的值 string :字符串(默认方式) |
4
示例:
protected $_auto = array (array('status','1'), // 新增的时候把status字段设置为1array('password','md5',1,'function') , // 对password字段在新增的时候使md5函数处理array('name','getName',1,'callback'), // 对name字段在新增的时候回调getName方法array('create_time','time',2,'function'), // 对create_time字段在更新的时候写入当前时间戳);
1
和自动验证一样,自动完成机制需要使用create方法才能生效。并且,也可以在操作方法中动态的更改自动完成的规则。
$auto = array (array('password','md5',1,'function') // 对password字段在新增的时候使md5函数处理);$User-> setProperty("_auto",$auto);$User->create();
动态设置自动完成规则
还可以使用auto方法动态设置自动完成规则,例如:
通过这一改进,以前需要支持数据自动完成,必须定义模型类的情况已经不再出现,你完全可以通过M方法实例化模型类后使用动态设置完成自动完成操作。
还可以使用auto方法动态设置自动完成规则,例如:
$this->auto($auto)->create();
通过这一改进,以前需要支持数据自动完成,必须定义模型类的情况已经不再出现,你完全可以通过M方法实例化模型类后使用动态设置完成自动完成操作。
