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



  • 相关阅读:
    Gridview布局界面练习Base Adapter
    用Handler图片轮播练习
    登陆界面用户名,密码存储以及再次登陆自动填充用户名、密码
    登陆界面练习
    进度条练习
    上下文菜单项(contextMenu)----长按按钮弹出菜单项
    菜单项的练习
    Android ImageView的scaleType属性与adjustViewBounds属性
    android单选框和复选框(练习)
    QQ登陆模拟练习
  • 原文地址:https://www.cnblogs.com/imysql/p/5391722.html
Copyright © 2020-2023  润新知