您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關ThinkPHP中自動驗證及驗證規則,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
詳解ThinkPHP中自動驗證及驗證規則
ThinkPHP 內置了數據對象的自動驗證功能來完成模型的業務規則驗證。自動驗證是基于數據對象的,而大多情況下數據對象是基于 $_POST表單 (不是絕對的)創建的。
基本的自動驗證功能包括:必須字段、email郵箱格式、唯一性、URL地址、數字、兩個字段是否相同、是否等于某個值等。
要使用系統的自動驗證功能,只需要在對應的 Model類 里面定義 $_validate 屬性(由多個驗證因子組成的數組),語法如下:
protected $_validate = array( array(驗證字段,驗證規則,錯誤提示[,驗證條件][,附加規則][,驗證時間]) };
驗證因子 | 說明 |
---|---|
驗證字段 | 必須。需要驗證的表單字段名稱,這個字段不一定是數據庫字段,也可以是表單的一些輔助字段,例如驗證碼等。 |
驗證規則 | 必須。要進行驗證的規則,需要聯合附加規則一起使用。 |
錯誤提示 | 必須。當驗證不通過時的提示信息。 |
驗證條件 | 可選。包括:
|
附加規則 | 可選。配合驗證規則使用,包括:
|
驗證時間 | 可選。包括:
|
自動驗證例子
下面的例子驗證文章標題必須填寫且檢測標題是否已存在:
class ArticleModel extends Model{ protected $_validate = array( array('title','require','標題不能為空!'), array('title','','標題已經存在!',0,'unique',1), }; }
在操作中,當使用 create 方法創建數據對象時會自動進行數據驗證操作(當 POST 提交表單處理時):
$Article = D("Article"); if (!$Article->create()){ // 如果創建失敗,表示驗證沒有通過(注:可能原因之一)輸出錯誤提示信息 exit($Article->getError()); }else{ // 驗證通過,繼續下一步流程如將數據寫入數據表 }
系統內置了一些常用正則驗證的規則,包括:require(必須)、email(郵箱格式)、url(URL地址)、currency(貨幣)、number(數字)、qq(QQ號碼)、english(英文字符),可以直接使用。
出于用戶體驗考慮,$Article->getError() 返回的錯誤提示信息,一般以 Ajax 方式返回,詳細參見《ThinkPHP Ajax》。
定義自己的驗證規則
當內置的這些驗證規則無法滿足驗證要求是,可以定義自己的驗證規則,如要求出生年月以 2000-1-1 格式輸入時:
array('birthday','/^d{4}-d{1,2}-d{1,2}$/','出生年月格式錯誤!'),
關于“ThinkPHP中自動驗證及驗證規則”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。