企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 自动完成 [上一页](# "上一页")[下一页](# "下一页") 在Model类定义 $_auto 属性,可以完成数据自动处理功能,用来处理默认值、数据过滤以及其他系统写入字段。$_auto属性是由多个填充因子组成的数组。 填充因子格式: `array(填充字段,填充内容,[填充条件,附加规则])`**说明** <table border="0" cellspacing="1" cellpadding="0"><tr><td>填充字段</td> <td>必须</td> <td width="550">就是需要进行处理的表单字段,这个字段不一定是数据库字段,也可以是表单的一些辅助字段,例如确认密码和验证码等等。</td> </tr><tr><td>填充规则</td> <td>必须</td> <td>配合附加规则完成</td> </tr><tr><td>填充时间</td> <td>可选</td> <td><p>包括:</p><br/><p>Model:: MODEL_INSERT或者1 新增数据的时候处理(默认)</p><br/><p>Model:: MODEL_UPDATE或者2更新数据的时候处理</p><br/><p>Model:: MODEL_BOTH或者3所有情况都进行处理</p></td> </tr><tr><td>附加规则</td> <td>可选</td> <td><p>包括:</p><br/><p>function :使用函数,表示填充的内容是一个函数名 </p><br/><p>callback :回调方法 ,表示填充的内容是一个当前模型的方法</p><br/><p>field :用其它字段填充,表示填充的内容是一个其他字段的值</p><br/><p>string :字符串(默认方式)</p></td> </tr></table> **示例**: `protected $_auto = array (      array('status','1'),  // 新增的时候把status字段设置为1     array('password','md5',1,'function') , // 对password字段在新增的时候使md5函数处理     array('name','getName',1,'callback'), // 对name字段在新增的时候回调getName方法     array('create_time','time',2,'function'), // 对create_time字段在更新的时候写入当前时间戳 );`使用自动填充可能会覆盖表单提交项目。其目的是为了防止表单非法提交字段。使用Model类的create方法创建数据对象的时候会自动进行表单数据处理。和自动验证一样,自动完成机制需要使用create方法才能生效。并且,也可以在操作方法中动态的更改自动完成的规则。`$auto = array (      array('password','md5',1,'function') // 对password字段在新增的时候使md5函数处理 ); $User-> setProperty("_auto",$auto); $User->create();`**动态设置自动完成规则** 还可以使用auto方法动态设置自动完成规则,例如:`$this->auto($auto)->create();`其中$auto变量的规范和_auto属性的定义规则一致,而且还可以支持函数调用(由于PHP本身的限制,在类的属性定义中不能调用函数)。 通过这一改进,以前需要支持数据自动完成,必须定义模型类的情况已经不再出现,你完全可以通过M方法实例化模型类后使用动态设置完成自动完成操作。 [上一页](# "上一页")[下一页](# "下一页")