学习要点: 1.完成规则 2.静态定义 3.动态完成
本节课,我们将要学习一下 ThinkPHP 模型层提供的数据处理方法,主要用于数据的自 动处理和过滤,使用 create()方法创建数据是会自动完成。
一.完成规则 自动完成一般通过默认字段写入、安全字段过滤以及业务逻辑的自动处理等。
有两种方 式实现自动完成的规则:
1.静态方式:在模型类里通过$_auto 属性定义处理规则;
2 动态 方式:使用模型类的 auto 方法动态创建自动处理规则。 //完成规则 array( array(完成字段1,完成规则,[完成条件,附加规则]), array(完成字段2,完成规则,[完成条件,附加规则]), ...... ); 完成字段:必填,需要的字段名; 完成规则:必填,配合附加规则完成; 完成条件:可选,具体如下:
1.self::MODEL_INSERT 或 1,新增数据的时候处理(默认);
2.self::MODEL_UPDATE 或 2,更新数据的时候处理;
3.self::MODEL_BOTH 或 3,所有情况均处理。
附加规则:可选,配合完成规则使用,包括一下规则: 规则 说明 function 函数完成,定义的验证规则是一个函数名 callback 方法完成,定义的验证规则是当前模型类的一个方法 field 用其他字段填充,表示填充的内容是一个其他字段的值 string 字符串(默认) ignore 为空则忽略(3.1.2新增) 二.静态定义 在模型类里预先定义好该模型的自动完成规则,就是静态定义。 class UserModel extends Model { //自动完成 protected $_auto = array( //自动设置count字段为1 array('count', '1'), //给密码加密,加密类型为sha1,sha1函数PHP内置 array('user', 'sha1', 3, 'function'), ); } 为了测试方便,我们可以直接通过模拟提交 POST: //控制器create()方法自动调用验证 $user = D('User'); $data['user'] = '蜡笔小新'; if ($user->create($data)) { $user->add(); } //string,自动设置count字段为1 array('count', '1'),
//function,给密码加密,加密类型为sha1,sha1函数PHP内置 array('user', 'sha1', 3, 'function'),
//把email字段的值填充到user字段冲去 array('user', 'email', 3, 'field'),
//callback,给用户名加前缀 array('user', 'updateUser', 3, 'callback', '_'),
//回调函数 protected function updateUser($str, $prefix) { return $prefix.$str; }
//ignore,用于修改时密码留空时,忽略修改 array('pass', '', 2, 'ignore'),
三.动态完成 动态完成就是把完成的规则放在控制器端,这样,在操作的时候比较灵活,缺点就是比 较混乱。 //动态完成 $rules = array( array('user', 'sha1', 3, 'function'), ); $user = M('User'); $data['user'] = '蜡笔小新'; if ($user->auto($rules)->create($data)) { $user->add(); } 感谢收看本