zoukankan      html  css  js  c++  java
  • thinkphp3.2.3之自动完成的实现

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

    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();
    }



  • 相关阅读:
    asp 向另一个页面传递数组
    TSQL Program Rule and Tips 规则与优化
    虚函数 纯虚函数 抽象类
    static (c#)
    简单游标
    抽象方法 抽象类 (abstract)
    清理电脑
    泛型学习
    继承(对象生命周期) + 覆盖[new](索引函数) + 重载[virtual/override]
    #干货向#jQuery性能优化指南
  • 原文地址:https://www.cnblogs.com/imysql/p/5391722.html
Copyright © 2011-2022 走看看