掌握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 }

 

posted @ 2016-12-11 22:14  xz小郑  阅读(640)  评论(0编辑  收藏  举报