《PHP編程:ThinkPHP表單數據智能寫入create方法實例分析》要點:
本文介紹了PHP編程:ThinkPHP表單數據智能寫入create方法實例分析,希望對您有用。如果有疑問,可以聯系我們。
相關主題:thinkphp教程
本文實例講述了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','','用戶名已經存在!',0,'unique',1), ); //自動填充設置 protected $_auto = array( array('regdate','time',self::MODEL_INSERT,'function'), array('password','md5',self::MODEL_INSERT,'function'), ); }
將 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教程
歡迎參與《PHP編程:ThinkPHP表單數據智能寫入create方法實例分析》討論,分享您的想法,維易PHP學院為您提供專業教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/8644.html