欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ThinkPHP表單數(shù)據(jù)智能寫入create方法實例分析

 更新時間:2015年09月27日 16:49:01   作者:5idev  
這篇文章主要介紹了ThinkPHP表單數(shù)據(jù)智能寫入create方法,以實例形式較為詳細的分析了ThinkPHP中create只能寫入的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了ThinkPHP表單數(shù)據(jù)智能寫入create方法。分享給大家供大家參考。具體如下:

創(chuàng)建數(shù)據(jù)對象 create()

除了手動構造入庫的數(shù)據(jù)集之外,ThinkPHP 還提供了自動創(chuàng)建數(shù)據(jù)對象的 create() 方法。create() 方法將自動收集提交的表單數(shù)據(jù)并創(chuàng)建數(shù)據(jù)對象而無需人工干預,這在表單數(shù)據(jù)字段非常多的情況下更具優(yōu)勢。

將前文寫入表單數(shù)據(jù)的例子用 create() 來實現(xiàn):

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 "插入數(shù)據(jù) id 為:$lastInsId";
  } else {
   echo "數(shù)據(jù)寫入錯誤!";
  }
 }else{
  exit($Dao->getError().' [ <a href="javascript:history.back()">返 回</a> ]');
 }
}

create() 創(chuàng)建數(shù)據(jù)對象后,將自動收集提交過來的表單數(shù)據(jù)。而表單數(shù)據(jù)可能需要經(jīng)過一定加工(例如將密碼加密)才能寫入數(shù)據(jù)表,所以可以對數(shù)據(jù)對象的成員屬性值根據(jù)進行修改或添加去除等。

提示:create() 創(chuàng)建的數(shù)據(jù)對象存放于內存,在執(zhí)行入庫動作(add() 或 save())之前,都可以進行修改。

在上面的例子里,create()方法 的行為和 date()方法 是一致。但 date() 方法只是簡單的創(chuàng)建數(shù)據(jù)對象,但 create() 方法還具備:

① 令牌驗證
② 數(shù)據(jù)自動驗證
③ 字段映射支持
④ 字段類型檢查
⑤ 數(shù)據(jù)自動完成

等各種高級的數(shù)據(jù)功能,要完成這些高級數(shù)據(jù)模型功能,需要使用 D方法 實例化數(shù)據(jù)模型。ThinkPHP 提供了各種驗證與填充規(guī)則供調用,具體可參見《ThinkPHP 自動驗證》與《ThinkPHP 自動填充》相關文章。

自動驗證與自動填充

在將表單寫入數(shù)據(jù)表之前,常常會有一些對數(shù)據(jù)的檢測(提交的用戶名是否符合要求)與處理(如例子中的密碼加密以及取得當前時間戳)。create() 方法就支持數(shù)據(jù)的自動驗證與自動完成。

在 LibModel 目錄下創(chuàng)建 UserModel.class.php 文件(User 為創(chuàng)建的模型對象,也對應 前綴_user 表),加入自動驗證和自動填充規(guī)則:

class UserModel extends Model{
 // 自動驗證設置
 protected $_validate = array(
  array('username','require','用戶名必須填寫!',1),
  array('email','email','郵箱格式錯誤!',2),
  array('username','','用戶名已經(jīng)存在!',0,'unique',1),
 );
 //自動填充設置
 protected $_auto = array(
  array('regdate','time',self::MODEL_INSERT,'function'),
  array('password','md5',self::MODEL_INSERT,'function'),
 );
}

將 insert2 操作更改為:

public function insert2(){
 header("Content-Type:text/html; charset=utf-8");
 $Dao = D("User");
 if($Dao->create()){
  if($lastInsId = $Dao->add()){
   echo "插入數(shù)據(jù) id 為:$lastInsId";
  } else {
   echo "數(shù)據(jù)寫入錯誤!";
  }
 }else{
  exit($Dao->getError().' [ <a href="javascript:history.back()">返 回</a> ]');
 }
}

如果提交的數(shù)據(jù)不符合驗證要求(如用戶名存在),則 create() 創(chuàng)建數(shù)據(jù)對象失?。ǚ祷?FALSE ),$Dao->getError() 會打印出自動驗證設置規(guī)則里面設置的提示信息:用戶名已經(jīng)存在!

如果驗證規(guī)則通過后,系統(tǒng)會進行自動填充設置,將表單密碼進行 MD5 加密以及取得當前的時間戳填充入 create() 的數(shù)據(jù)對象。

所以 D方法 配合 create() 是非常智能而強大的,恰當運用可以達到事半功倍快速開發(fā)的目的。

提示:

① D 方法配合 create() 由于其功能強大,也就損失了一定的效率,在業(yè)務邏輯不復雜的情況下推薦 M方法+data() 模式

② create() 默認接受 POST 數(shù)據(jù),若要接受其他類型數(shù)據(jù),只需在參數(shù)內指定即可,如接受 GET 數(shù)據(jù):create($_GET)

更多關于thinkPHP相關內容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》及《ThinkPHP常用方法總結

希望本文所述對大家基于ThinkPHP框架的php程序設計有所幫助。

相關文章

  • php微信開發(fā)之谷歌測距

    php微信開發(fā)之谷歌測距

    這篇文章主要為大家詳細介紹了php微信開發(fā)之谷歌測距的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • PHP魔術方法的使用示例

    PHP魔術方法的使用示例

    這篇文章主要介紹了PHP魔術方法的使用示例,本文分別講解了__get、__set、__call、__callStatic、__toString、 __invoke等魔術方法的使用,需要的朋友可以參考下
    2015-06-06
  • 詳解PHP函數(shù) strip_tags 處理字符串缺陷bug

    詳解PHP函數(shù) strip_tags 處理字符串缺陷bug

    這篇文章主要介紹了詳解PHP函數(shù) strip_tags 處理字符串缺陷bug的相關資料,需要的朋友可以參考下
    2017-06-06
  • Yii基于數(shù)組和對象的Model查詢技巧實例詳解

    Yii基于數(shù)組和對象的Model查詢技巧實例詳解

    這篇文章主要介紹了Yii基于數(shù)組和對象的Model查詢技巧,結合實例形式較為詳細的分析了Yii針對數(shù)組及對象的Model查詢使用技巧,需要的朋友可以參考下
    2015-12-12
  • thinkPHP框架可添加js事件的分頁類customPage.class.php完整實例

    thinkPHP框架可添加js事件的分頁類customPage.class.php完整實例

    這篇文章主要介紹了thinkPHP框架可添加js事件的分頁類customPage.class.php,以完整實例形式給出了分頁類customPage.class.php的實現(xiàn)代碼并分析了ajax動態(tài)加載數(shù)據(jù),設置分頁鏈接等功能,需要的朋友可以參考下
    2017-03-03
  • thinkphp連貫操作實例分析

    thinkphp連貫操作實例分析

    這篇文章主要介紹了thinkphp連貫操作,以實例形式較為詳細的分析了連貫操作的具體用法及常用的方法含義,是非常實用的技巧,需要的朋友可以參考下
    2014-11-11
  • yii實現(xiàn)創(chuàng)建驗證碼實例解析

    yii實現(xiàn)創(chuàng)建驗證碼實例解析

    這篇文章主要介紹了yii實現(xiàn)創(chuàng)建驗證碼的方法,很常見的一類功能,需要的朋友可以參考下
    2014-07-07
  • Yii安裝與使用Excel擴展的方法

    Yii安裝與使用Excel擴展的方法

    這篇文章主要介紹了Yii安裝與使用Excel擴展的方法,簡單分析了Yii中Excel擴展的下載、安裝及相關使用技巧,需要的朋友可以參考下
    2016-07-07
  • destoon后臺網(wǎng)站設置變成空白的解決方法

    destoon后臺網(wǎng)站設置變成空白的解決方法

    這篇文章主要介紹了destoon后臺網(wǎng)站設置變成空白的解決方法,需要的朋友可以參考下
    2014-06-06
  • Laravel中為什么不使用blpop取隊列詳析

    Laravel中為什么不使用blpop取隊列詳析

    這篇文章主要給大家介紹了關于Laravel中為什么不使用blpop取隊列的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08

最新評論