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