掌握Thinkphp3.2.0----自动完成
自动完成,是在create数据的时候自动执行的一个或多个动作
自动完成也分为动态和静态两种
格式:
//完成规则
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新增)
1.静态定义
1 在模型类里预先定义好该模型的自动完成规则,就是静态定义。 2 class UserModel s extends Model { 3 //自动完成 4 protected $_auto = array( 5 //自动设置count字段为1 6 array('count', '1'), 7 //给密码加密,加密类型为sha1,sha1函数PHP内置 8 array('user', 'sha1', 3, 'function'), 9 ); 10 } 11 为了测试方便,我们可以直接通过模拟提交 POST: 12 //控制器create()方法自动调用验证 13 $user = D('User'); 14 $data['user'] = '蜡笔小新'; 15 if ($user->create($data)) { 16 $user->add(); 17 } 18 //string,自动设置count字段为1 19 array('count', '1'), 20 //function,给密码加密,加密类型为sha1,sha1函数PHP内置 21 array('user', 'sha1', 3, 'function'), 22 //把email字段的值填充到user字段冲去 23 array('user', 'email', 3, 'field'), 24 //callback,给用户名加前缀 25 array('user', 'updateUser', 3, 'callback', '_'), 26 //回调函数 27 protected function updateUser($str, $prefix) { 28 return $prefix.$str; 29 } 30 //ignore,用于修改时密码留空时,忽略修改 31 array('pass', '', 2, 'ignore'),
2.动态完成
1 //动态完成 2 $rules = array( 3 array('user', 'sha1', 3, 'function'), 4 ); 5 $user = M('User'); 6 $data['user'] = '蜡笔小新'; 7 f if ($user->auto($rules)->create($data)) { 8 $user->add(); 9 }