有时候,我们希望系统能够帮我们自动完成一些功能,比如自动为密码加密,忽略空等,这个时候我们就需要利用到自动完成(填写)的功能。

ThinkPHP 模型层提供的数据处理方法,主要用于数据的自动处理和过滤,使用 create()方法创建数据是会自动完成。自动完成一般通过默认字段写入、安全字段过滤以及业务逻辑的

自动处理等。有两种方式实现自动完成的规则:1.静态方式:在模型类里通过$_auto 属性定义处理规则;2 动态方式:使用模型类的 auto 方法动态创建自动处理规则。

一.完成规则

array(

  array(完成字段1,完成规则1,[完成规则1,完成条件1]),

  array(完成字段2,完成规则2,[完成规则2,完成条件2]),

完成条件:可选,具体如下:
1.self::MODEL_INSERT 或 1,新增数据的时候处理(默认) ;
2.self::MODEL_UPDATE 或 2,更新数据的时候处理;
3.self::MODEL_BOTH 或 3,所有情况均处理。
附加规则:可选,配合完成规则使用,包括一下规则:
规则 说明
  function 函数完成,定义的验证规则是一个函数名
  callback 方法完成,定义的验证规则是当前模型类的一个方法
  field 用其他字段填充,表示填充的内容是一个其他字段的值
  string 字符串(默认)
  ignore 为空则忽略
二.静态方式

在Common/UserModel下:

class UserModel extends Model{
protected $_auto = array (
// 新增的时候把status字段设置为1
array('status','1'),
// 对password字段在所有情况下使用md5函数处理
array('password','md5',3,'function'),
// 对username字段在新增时回调getName方法
array('username','getName',1,'callback'),
// 对regdate字段在新增时写入当前时间戳
array('regdate','time',1,'function'),
// 对regip字段在新增时写入用户注册IP地址
array('regip','get_client_ip',1,'function'),
);
}

对Home/Controller/UserController.class.php起约束

三.动态方式

  直接书写在Home/Controller/UserController.class.php,即动态完成就是把完成的规则放在控制器端,这样,在操作的时候比较灵活,缺点就是比
较混乱。
 //动态完成
$rules = array(
array('user', 'sha1', 3, 'function'),//完成对user字段的加密
);
$user = M('User');
$data['user'] = '蜡笔小新';
if ($user->auto($rules)->create($data)) {
$user->add();
}

thinkphp3.2.3之自动完成的实现的更多相关文章

  1. Thinkphp3.2数据库字段自动转小写,字段大小写自动转换,以及thinkphp3一些bug

    公司在使用thinkphp框架,版本也有些老,被一些bug坑了,记录一下 自动转小写解决办法,最简单的就是在配置文件加上 'DB_PARAMS' => [\PDO::ATTR_CASE => ...

  2. ThinkPHP导入第三方类库Vendor

    详情查看ThinkPHP3.2手册 架构 > 自动加载 章节 vendor('Uploader','','.class.php')

  3. ThinkPHP3.2.3中三大自动中的缺陷问题

    我们在使用Thinkphp3.2.3框架时在对数据表进行模型化后就可以使用自动完成功能. 自动完成可以帮助我们更简便的完成对表单内容对数据表(集合)的填充,自动完成是基于: 当实例化数据库user后, ...

  4. ThinkPHP3自动加载公共函数文件

    7d 根目录 ├─Application 应用目录 │ ├─Common 公共模块 │ │ ├─Common 公共函数文件目录 │ │ │ ├─index.html │ │ ├─Config 配置文件 ...

  5. ThinkPHP3.1.3分表状态时候的自动验证的代码BUG

    问题描述 ThinkPHP3.1.3 当使用TP的分库分表后 有些地方需要使用Model自动验证create,当验证唯一性unique会出现BUG, 具体描述 因为自动验证检测唯一性会使用隐式的使用f ...

  6. ThinkPHP3.1快速入门(13)自动完成

    自动完成是ThinkPHP提供用来完成数据自动处理和过滤的方法,使用create方法创建数据对象的时候会自动完成数据处理.因此,在ThinkPHP使用create方法来创建数据对象是更加安全的方式,而 ...

  7. ThinkPHP3.1快速入门(12)自动验证

    自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 验证规则 数据验证可以进行数据类型.业务规则.安全判断等方面的验证操作.数据验证有两 ...

  8. thinkphp3.2自动生成模块BIND_MODULE

    thinphp3.2中提供了自定义生成模块与控制器的常量,分别是BIND_MODULE,BUILD_CONTROLLER_LIST 在 index.php 文件中定义 BIND_MODULE,BUIL ...

  9. Thinkphp3.2.X自动生成应用目录

    从3.2.2版本开始,可以支持自动生成默认模块之外的模块目录以及批量生成控制器和模型类. 例如,如果我们需要生成一个Admin模块用于后台应用,在应用入口文件中定义如下: // 绑定Admin模块到当 ...

随机推荐

  1. Python版本2.7切3.5和3.5切2.7

    在Ubuntu上是自带Python2.7和3.5的 当你在终端输入Python的时候是显示Python2.7的 叫大家你怎么切换到Python3.5版本 1,查看是否存在python3.5终端输入 c ...

  2. Java集合之泛型的使用

    Java集合之泛型的使用 泛型提供了一种轻便灵活的数据操作,数据的安全性相对提高. 泛型提供了对列表元素的约束条件,比如ArrayList有序链表,可存储任意类型的元素. 此处构建一个ArrayLis ...

  3. TFS 掩蔽或取消掩蔽工作区中的文件夹

    掩蔽或取消掩蔽工作区中的文件夹 使用掩蔽功能可以阻止用户查看指定的工作区文件夹或者您当前不需要的文件夹.当您在对一个公共父级下的两个或更多个分支中的文件进行操作时,就可以使用掩蔽功能来避免复制不必要的 ...

  4. 微信小程序入门正确姿势(一)

    [未经作者本人同意,请勿以任何形式转载] >>>前言 这是 [认真学编程] 系列的 第4篇 文章(微信小程序入门系列),欢迎点赞分享.写留言,这些都是对我最好的支持. 本系列适合有一 ...

  5. 20145233 GDB调试汇编分析

    GDB调试汇编分析 代码 #include<stdio.h> short addend1 = 1; static int addend2 = 2; const static long ad ...

  6. 如何在个人博客引擎 Hexo 中添加 Swiftype 搜索组件

    在您现在看到的我的博客站点,后台使用的是 Hexo 作为博客引擎,但是默认集成的搜索组件是进行 form 提交到 Google 进行搜索的,为了更好地体验,本文介绍如何在 Hexo 博客中集成 Swi ...

  7. Java--笔记(7)

    61.几种常见排序法的比较 排序法 平均时间 最差情形 稳定度 额外空间 冒泡 O(n2)     O(n2) 稳定 O(1) 交换     O(n2)     O(n2) 不稳定 O(1) 选择 O ...

  8. ES6新特性:Javascript中内置的延迟对象Promise

    Promise的基本使用: 利用Promise是解决JS异步执行时候回调函数嵌套回调函数的问题, 更简洁地控制函数执行流程: 通过new实例化Promise,  构造函数需要两个参数, 第一个参数为函 ...

  9. 基于MST的立体匹配及相关改进(A Non-Local Cost Aggregation Method for Stereo Matching)

    怀着很纠结的心情来总结这篇论文,这主要是因为作者提虽然供了源代码,但是我并没有仔细去深究他的code,只是把他的算法加进了自己的项目.希望以后有时间能把MST这一结构自己编程实现!! 论文题目是基于非 ...

  10. hdu 1410

    Ref : http://www.clanfei.com/2012/04/772.html 可推出公式: ans=sigma[C(N1-1,i)*0.5^(N1+i)] (0<=i<=N2 ...