ThinkPHP 自動驗證

2021-07-10 15:48:58 字數 1824 閱讀 4450

thinkphp 內建了資料物件的自動驗證功能來完成模型的業務規則驗證。自動驗證是基於資料物件的,而大多情況下資料物件是基於 $_post表單 (不是絕對的)建立的。

基本的自動驗證功能包括:必須字段、email郵箱格式、唯一性、url位址、數字、兩個字段是否相同、是否等於某個值等。

要使用系統的自動驗證功能,只需要在對應的 model類 裡面定義 $_validate 屬性(由多個驗證因子組成的陣列),語法如下:

protected $_validate = array(

array(驗證字段,驗證規則,錯誤提示[,驗證條件][,附加規則][,驗證時間])

};

thinkphp自動驗證格式說明:

驗證因子

說明驗證字段

必須。需要驗證的表單字段名稱,這個欄位不一定是資料庫字段,也可以是表單的一些輔助字段,例如驗證碼等。

驗證規則

必須。要進行驗證的規則,需要聯合附加規則一起使用。

錯誤提示

必須。當驗證不通過時的提示資訊。

驗證條件

可選。包括:

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");

if (!$article->create())else

系統內建了一些常用正則驗證的規則,包括:require(必須)、email(郵箱格式)、url(url位址)、currency(貨幣)、number(數字)、qq(qq號碼)、english(英文本元),可以直接使用。

出於使用者體驗考慮,$article->geterror() 返回的錯誤提示資訊,一般以 ajax 方式返回,詳細參見《thinkphp ajax》。

當內建的這些驗證規則無法滿足驗證要求是,可以定義自己的驗證規則,如要求出生年月以 2000-1-1 格式輸入時:

array('birthday','/^d-d-d$/','出生年月格式錯誤!'),
可見,只需幾行簡單的**,就實現了各種不同方式的表單驗證,靈活使用 thinkphp 自動驗證,可以讓開發過程事半功倍。更多自動驗證列子,參見本節內容之《thinkphp 自動驗證例項》。

ThinkPHP自動驗證

array 驗證字段,驗證規則,錯誤提示,驗證條件,附加規則,驗證時間 1.驗證字段 需要驗證的表單字段名稱,這個欄位不一定是資料庫字段,也可以是表單的一些輔助字段,例如確認密碼和驗證碼等等。有個別驗證規則和字段無關的情況下,驗證欄位是可以隨意設定的,例如expire有效期規則是和表單字段無關的。2...

thinkphp自動驗證相關

protected validate array 郵箱驗證,格式,必須 array email require 郵箱必須!array email email 郵箱格式不正確!暱稱驗證,格式,必須,唯一 array nickname require 暱稱必須!array nickname 暱稱已經存在...

thinkphp自動驗證 validate

array 驗證字段,驗證規則,錯誤提示,驗證條件,附加規則,驗證時間 1.驗證字段 需要驗證的表單字段名稱,這個欄位不一定是資料庫字段,也可以是表單的一些輔助字段,例如確認密碼和驗證碼等等。有個別驗證規則和字段無關的情況下,驗證欄位是可以隨意設定的,例如expire有效期規則是和表單字段無關的。2...