中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ThinkPHP表單數據如何智能寫入create方法

發布時間:2021-09-02 17:59:05 來源:億速云 閱讀:135 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關ThinkPHP表單數據如何智能寫入create方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

具體如下:

創建數據對象 create()

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

將前文寫入表單數據的例子用 create() 來實現:

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="javascript:history.back()">返 回</a> ]');
 }
}

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

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

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

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

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

自動驗證與自動填充

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

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

class UserModel extends Model{
 // 自動驗證設置
 protected $_validate = array(
  array('username','require','用戶名必須填寫!',1),
  array('email','email','郵箱格式錯誤!',2),
  array('username','','用戶名已經存在!',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 "插入數據 id 為:$lastInsId";
  } else {
   echo "數據寫入錯誤!";
  }
 }else{
  exit($Dao->getError().' [ <a href="javascript:history.back()">返 回</a> ]');
 }
}

如果提交的數據不符合驗證要求(如用戶名存在),則 create() 創建數據對象失敗(返回 FALSE ),$Dao->getError() 會打印出自動驗證設置規則里面設置的提示信息:用戶名已經存在!

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

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

提示:

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

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

關于“ThinkPHP表單數據如何智能寫入create方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

拜城县| 科尔| 沁源县| 东源县| 永春县| 航空| 广丰县| 广德县| 青阳县| 桐柏县| 日照市| 义马市| 沁水县| 皋兰县| 台中市| 益阳市| 城步| 洪湖市| 三门县| 青海省| 慈溪市| 藁城市| 铜陵市| 渑池县| 安顺市| 霍林郭勒市| 卫辉市| 安远县| 烟台市| 兖州市| 沂源县| 淮南市| 辽宁省| 涞源县| 陇西县| 江永县| 祁东县| 长海县| 八宿县| 阳新县| 和平区|