• 第 39 章 ThinkPHP--自动完成


    学习要点: 1.完成规则 2.静态定义 3.动态完成

    本节课,我们将要学习一下 ThinkPHP 模型层提供的数据处理方法,主要用于数据的自 动处理和过滤,使用 create()方法创建数据是会自动完成。

    一.完成规则 自动完成一般通过默认字段写入、安全字段过滤以及业务逻辑的自动处理等。

    有两种方 式实现自动完成的规则:

    1.静态方式:在模型类里通过$_auto 属性定义处理规则;

    2 动态 方式:使用模型类的 auto 方法动态创建自动处理规则。 //完成规则 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新增) 二.静态定义 在模型类里预先定义好该模型的自动完成规则,就是静态定义。 class UserModel extends Model { //自动完成 protected $_auto = array( //自动设置count字段为1 array('count', '1'), //给密码加密,加密类型为sha1,sha1函数PHP内置 array('user', 'sha1', 3, 'function'), ); } 为了测试方便,我们可以直接通过模拟提交 POST: //控制器create()方法自动调用验证 $user = D('User'); $data['user'] = '蜡笔小新'; if ($user->create($data)) { $user->add(); } //string,自动设置count字段为1 array('count', '1'),

    //function,给密码加密,加密类型为sha1,sha1函数PHP内置 array('user', 'sha1', 3, 'function'),

    //把email字段的值填充到user字段冲去 array('user', 'email', 3, 'field'),

    //callback,给用户名加前缀 array('user', 'updateUser', 3, 'callback', '_'),

    //回调函数 protected function updateUser($str, $prefix) { return $prefix.$str; }

    //ignore,用于修改时密码留空时,忽略修改 array('pass', '', 2, 'ignore'),

    三.动态完成 动态完成就是把完成的规则放在控制器端,这样,在操作的时候比较灵活,缺点就是比 较混乱。 //动态完成 $rules = array( array('user', 'sha1', 3, 'function'), ); $user = M('User'); $data['user'] = '蜡笔小新'; if ($user->auto($rules)->create($data)) { $user->add(); } 感谢收看本

    我的个人博客,欢迎来访问!网址:http://www.miuu.club
  • 相关阅读:
    VS2008中影响exe大小的和速度的选项(转)
    Some VS2005 and VS2008 Wizards Pop Up Script Error(转)
    winform 界面控件更新(转)
    SQL 2005 的存储过程和触发器调试大法(转)
    c# 正则表达式(转)
    让国外邮件服务商不再拒收你的邮件,The IP you're using to send mail is not authorized(转)
    vs2010 修改标题的方法
    SetFilePointer 使用
    修复2003系统,html图表不正确的方法
    c#字符串及数组操作 (转)
  • 原文地址:https://www.cnblogs.com/yu520zhong/p/4855816.html
Copyright © 2020-2023  润新知