加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP编程:ThinkPHP表单数据智能写入create方法实例分析

发布时间:2020-12-13 02:51:55 所属栏目:PHP教程 来源:网络整理
导读:《ThinkPHP表单数据智能写入create方法实例分析》要点: 本文介绍了ThinkPHP表单数据智能写入create方法实例分析,希望对您有用。如果有疑问,可以联系我们。 本篇章节讲解ThinkPHP表单数据智能写入create办法.供大家参考研究.具体如下: PHP教程 创

《ThinkPHP表单数据智能写入create方法实例分析》要点:
本文介绍了ThinkPHP表单数据智能写入create方法实例分析,希望对您有用。如果有疑问,可以联系我们。

本篇章节讲解ThinkPHP表单数据智能写入create办法.分享给大家供大家参考.具体如下:PHP教程

创建数据对象 create()PHP教程

除了手动构造入库的数据集之外,ThinkPHP 还提供了自动创建数据对象的 create() 办法.create() 办法将自动收集提交的表单数据并创建数据对象而无需人工干预,这在表单数据字段非常多的情况下更具优势.PHP教程

将前文写入表单数据的例子用 create() 来实现:PHP教程

public function insert2(){
 header("Content-Type:text/html; charset=utf-8");
 $Dao = M("User");
 if($Dao->create()){
  $Dao->password = md5($_POST["password"]);
  $Dao->regdate = time();
  if($lastInsId = $Dao->add()){
   echo "插入数据 id 为:$lastInsId";
  } else {
   echo "数据写入错误!";
  }
 }else{
  exit($Dao->getError().' [ <a href="history.back()">返 回</a> ]');
 }
}

create() 创建数据对象后,将自动收集提交过来的表单数据.而表单数据可能需要经过一定加工(例如将暗码加密)才能写入数据表,所以可以对数据对象的成员属性值根据进行修改或添加去除等.PHP教程

提示:create() 创建的数据对象存放于内存,在执行入库动作(add() 或 save())之前,都可以进行修改.PHP教程

在上面的例子里,create()办法 的行为和 date()办法 是一致.但 date() 办法只是简单的创建数据对象,但 create() 办法还具备:PHP教程

① 令牌验证
② 数据自动验证
③ 字段映射支持
④ 字段类型检查
⑤ 数据自动完成PHP教程

等各种高级的数据功能,要完成这些高级数据模型功能,需要使用 D办法 实例化数据模型.ThinkPHP 提供了各种验证与填充规则供调用,具体可参见《ThinkPHP 自动验证》与《ThinkPHP 自动填充》相关文章.PHP教程

自动验证与自动填充PHP教程

在将表单写入数据表之前,常常会有一些对数据的检测(提交的用户名是否符合要求)与处理(如例子中的暗码加密以及取得当前时间戳).create() 方法就支持数据的自动验证与自动完成.PHP教程

在 LibModel 目录下创建 UserModel.class.php 文件(User 为创建的模型对象,也对应 前缀_user 表),加入自动验证和自动填充规则:PHP教程

class UserModel extends Model{
 // 自动验证设置
 protected $_validate = array(
  array('username','require','用户名必须填写!',1),array('email','email','邮箱格式错误!',2),array('username','','用户名已经存在!','unique',);
 //自动填充设置
 protected $_auto = array(
  array('regdate','time',self::MODEL_INSERT,'function'),array('password','md5',);
}

将 insert2 操作更改为:PHP教程

public function insert2(){
 header("Content-Type:text/html; charset=utf-8");
 $Dao = D("User");
 if($Dao->create()){
  if($lastInsId = $Dao->add()){
   echo "插入数据 id 为:$lastInsId";
  } else {
   echo "数据写入错误!";
  }
 }else{
  exit($Dao->getError().' [ <a href="history.back()">返 回</a> ]');
 }
}

如果提交的数据不符合验证要求(如用户名存在),则 create() 创建数据对象失败(返回 FALSE ),$Dao->getError() 会打印出自动验证设置规则里面设置的提示信息:用户名已经存在!PHP教程

如果验证规则通过后,系统会进行自动填充设置,将表单暗码进行 MD5 加密以及取得当前的时间戳填充入 create() 的数据对象.PHP教程

所以 D办法 配合 create() 是非常智能而强大的,恰当运用可以达到事半功倍快速开发的目的.PHP教程

提示:PHP教程

① D 办法配合 create() 由于其功能强大,也就损失了一定的效率,在业务逻辑不复杂的情况下推荐 M办法+data() 模式PHP教程

② create() 默认接受 POST 数据,若要接受其他类型数据,只需在参数内指定即可,如接受 GET 数据:create($_GET)PHP教程

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》及《ThinkPHP常用办法总结》PHP教程

希望本文所述对大家基于ThinkPHP框架的php程序设计有所赞助.PHP教程

欢迎参与《ThinkPHP表单数据智能写入create方法实例分析》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读