thinkphp 內建了資料物件的自動驗證功能來完成模型的業務規則驗證。自動驗證是基於資料物件的,而大多情況下資料物件是基於 $_post表單 (不是絕對的)建立的。
基本的自動驗證功能包括:必須字段、email郵箱格式、唯一性、url位址、數字、兩個字段是否相同、是否等於某個值等。
要使用系統的自動驗證功能,只需要在對應的 model類 裡面定義 $_validate 屬性(由多個驗證因子組成的陣列),語法如下:
protected $_validate = array(thinkphp自動驗證格式說明:array(驗證字段,驗證規則,錯誤提示[,驗證條件][,附加規則][,驗證時間])
};
驗證因子
說明驗證字段
必須。需要驗證的表單字段名稱,這個欄位不一定是資料庫字段,也可以是表單的一些輔助字段,例如驗證碼等。
驗證規則
必須。要進行驗證的規則,需要聯合附加規則一起使用。
錯誤提示
必須。當驗證不通過時的提示資訊。
驗證條件
可選。包括:
model::exists_to_vailidate 或者 0 :存在欄位就驗證(預設)
model::must_to_validate 或者 1 :必須驗證
model::value_to_vailidate 或者 2 :值不為空的時候驗證
附加規則
可選。配合驗證規則使用,包括:
regex:使用正則進行驗證,表示前面定義的驗證規則是乙個正規表示式(預設)
unique:驗證唯一性,系統會根據字段目前的值查詢資料庫來判斷是否存在相同的值
confirm:驗證表單中的兩個字段是否相同,前面定義的驗證規則是乙個欄位名
equal:驗證是否等於某個值,該值由前面的驗證規則定義
in:驗證是否在某個範圍內,前面定義的驗證規則必須是乙個陣列
function:使用函式驗證,表示前面定義的驗證規則是乙個函式名
callback:使用方法驗證,前面定義的驗證規則是當前 model 類的乙個方法
驗證時間
可選。包括:
model:: model_insert 或者 1 :新增資料時候驗證
model:: model_update 或者 2 :編輯資料時候驗證
model:: model_both 或者 3 :全部情況下驗證(預設)
下面的例子驗證文章標題必須填寫且檢測標題是否已存在:
class articlemodel extends model;在操作中,當使用 create 方法建立資料物件時會自動進行資料驗證操作(當 post 提交表單處理時):}
$article = d("article");系統內建了一些常用正則驗證的規則,包括:require(必須)、email(郵箱格式)、url(url位址)、currency(貨幣)、number(數字)、qq(qq號碼)、english(英文本元),可以直接使用。if (!$article->create())else
出於使用者體驗考慮,$article->geterror() 返回的錯誤提示資訊,一般以 ajax 方式返回,詳細參見《thinkphp ajax》。
當內建的這些驗證規則無法滿足驗證要求是,可以定義自己的驗證規則,如要求出生年月以 2000-1-1 格式輸入時:
array('birthday','/^d-d-d$/','出生年月格式錯誤!'),可見,只需幾行簡單的**,就實現了各種不同方式的表單驗證,靈活使用 thinkphp 自動驗證,可以讓開發過程事半功倍。更多自動驗證列子,參見本節內容之《thinkphp 自動驗證例項》。
ThinkPHP 自動驗證
thinkphp 內建了資料物件的自動驗證功能來完成模型的業務規則驗證。自動驗證是基於資料物件的,而大多情況下資料物件是基於 post表單 不是絕對的 建立的。基本的自動驗證功能包括 必須字段 email郵箱格式 唯一性 url位址 數字 兩個字段是否相同 是否等於某個值等。要使用系統的自動驗證功能...
ThinkPHP自動驗證
array 驗證字段,驗證規則,錯誤提示,驗證條件,附加規則,驗證時間 1.驗證字段 需要驗證的表單字段名稱,這個欄位不一定是資料庫字段,也可以是表單的一些輔助字段,例如確認密碼和驗證碼等等。有個別驗證規則和字段無關的情況下,驗證欄位是可以隨意設定的,例如expire有效期規則是和表單字段無關的。2...
thinkphp自動驗證相關
protected validate array 郵箱驗證,格式,必須 array email require 郵箱必須!array email email 郵箱格式不正確!暱稱驗證,格式,必須,唯一 array nickname require 暱稱必須!array nickname 暱稱已經存在...