码迷,mamicode.com
首页 > 其他好文 > 详细

自动完成

时间:2015-05-13 18:58:44      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:

ThinkPHP 模型层提供的数据处理方法,主要用于数据的自
动处理和过滤,使用 create()方法创建数据是会自动完成。

 

一. 完成规则

自动完成一般通过默认字段写入、安全字段过滤以及业务逻辑的自动处理等。有两种方
式实现自动完成的规则:1.静态方式:在模型类里通过$_auto 属性定义处理规则;2 动态
方式:使用模型类的 auto 方法动态创建自动处理规则。

1 //完成规则
2 array(
3 array(完成字段1,完成规则,[完成条件,附加规则]),
4 array(完成字段2,完成规则,[完成条件,附加规则]),
5 ......
6 );

完成字段:必填,需要的字段名;
完成规则:必填,配合附加规则完成;
完成条件:可选,具体如下:
1.self::MODEL_INSERT 或 1,新增数据的时候处理(默认);
2.self::MODEL_UPDATE 或 2,更新数据的时候处理;
3.self::MODEL_BOTH 或 3,所有情况均处理。

 


附加规则:可选,配合完成规则使用,包括一下规则:

 规则  说明
 function  函数完成,定义的验证规则是一个函数名
 callback  方法完成,定义的验证规则是当前模型类的一个方法
 field  用其他字段填充,表示填充的内容是一个其他字段的值
 string   字符串(默认)
 ignore  为空则忽略(3.1.2新增)

 

 

二. 静态定义
在模型类里预先定义好该模型的自动完成规则,就是静态定义。

在  Home/controller/UserController.class.php 里插入以下代码:

1 public function add() {
2             $user=D(‘User‘);
3             $data[‘user‘]=‘蜡笔大新‘;
4             $data[‘email‘]=‘bbb@qq.com‘;
5             if($user->create($data)) {
6                 $user->add();
7             }
8         }

注意一下的是: $user->add(); 里不再需要加上$data了否则后面的功能就实现不了了。

然后在 Home/Model/UserModel.class.php 插入以下代码:

 1 <?php
 2 namespace Home\Model;
 3 use Think\Model;
 4 
 5 class UserModel extends Model {
 6     protected $_auto = array(
 7         array(‘count‘,‘1‘),
 8         array(‘user‘,‘sha1‘,3,‘function‘),
 9         );
10 }

这时当执行 Home/controller/UserController.class.php 的add()函数时,添加到数据库的数据中的count下的数值会自动加一,同时user会使用sha1加密,

 array(‘user‘,‘sha1‘,3,‘function‘), 中使用了function,当并没有在conmon文件夹下的common下建立function.php,并在其中建立function sha1函数,

是因为sha1加密函数是ThinkPHP自带的,已经封装好了,md5加密方式也是。

 

还有诸如:

1 array(‘user‘,‘email‘,3,‘field‘),

是把email写入到用户名中。

 

callback,给用户名加前缀

这时就是当添加用户名到数据库时,给上传的用户名加上前缀

 

自动完成

标签:

原文地址:http://www.cnblogs.com/jacson/p/4501175.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!