国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > ThinkPHP > 正文

ThinkPHP 自動(dòng)驗(yàn)證及驗(yàn)證規(guī)則詳解

2024-09-09 15:19:39
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

ThinkPHP 自動(dòng)驗(yàn)證

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ǔ)法如下:

  1. protected $_validate = array
  2.     array(驗(yàn)證字段,驗(yàn)證規(guī)則,錯(cuò)誤提示[,驗(yàn)證條件][,附加規(guī)則][,驗(yàn)證時(shí)間]) 
  3. }; 

ThinkPHP自動(dòng)驗(yàn)證格式說(shuō)明:

驗(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)證不通過(guò)時(shí)的提示信息。
驗(yàn)證條件 可選。包括:
  1. Model::EXISTS_TO_VAILIDATE 或者 0 :存在字段就驗(yàn)證(默認(rèn))
  2. Model::MUST_TO_VALIDATE 或者 1 :必須驗(yàn)證
  3. Model::VALUE_TO_VAILIDATE 或者 2 :值不為空的時(shí)候驗(yàn)證
附加規(guī)則 可選。配合驗(yàn)證規(guī)則使用,包括:
  1. regex:使用正則進(jìn)行驗(yàn)證,表示前面定義的驗(yàn)證規(guī)則是一個(gè)正則表達(dá)式(默認(rèn))
  2. unique:驗(yàn)證唯一性,系統(tǒng)會(huì)根據(jù)字段目前的值查詢數(shù)據(jù)庫(kù)來(lái)判斷是否存在相同的值
  3. confirm:驗(yàn)證表單中的兩個(gè)字段是否相同,前面定義的驗(yàn)證規(guī)則是一個(gè)字段名
  4. equal:驗(yàn)證是否等于某個(gè)值,該值由前面的驗(yàn)證規(guī)則定義
  5. in:驗(yàn)證是否在某個(gè)范圍內(nèi),前面定義的驗(yàn)證規(guī)則必須是一個(gè)數(shù)組
  6. function:使用函數(shù)驗(yàn)證,表示前面定義的驗(yàn)證規(guī)則是一個(gè)函數(shù)名
  7. callback:使用方法驗(yàn)證,前面定義的驗(yàn)證規(guī)則是當(dāng)前 Model 類的一個(gè)方法
驗(yàn)證時(shí)間 可選。包括:
  1. Model:: MODEL_INSERT 或者 1 :新增數(shù)據(jù)時(shí)候驗(yàn)證
  2. Model:: MODEL_UPDATE 或者 2 :編輯數(shù)據(jù)時(shí)候驗(yàn)證
  3. Model:: MODEL_BOTH 或者 3 :全部情況下驗(yàn)證(默認(rèn))

自動(dòng)驗(yàn)證例子,下面的例子驗(yàn)證文章標(biāo)題必須填寫且檢測(cè)標(biāo)題是否已存在:

  1. class ArticleModel extends Model{ 
  2.     protected $_validate = array
  3.         array('title','require','標(biāo)題不能為空!'), 
  4.         array('title','','標(biāo)題已經(jīng)存在!',0,'unique',1), 
  5.     }; 

在操作中,當(dāng)使用 create 方法創(chuàng)建數(shù)據(jù)對(duì)象時(shí)會(huì)自動(dòng)進(jìn)行數(shù)據(jù)驗(yàn)證操作(當(dāng) POST 提交表單處理時(shí)):

  1. $Article = D("Article"); 
  2. if (!$Article->create()){ 
  3.     // 如果創(chuàng)建失敗,表示驗(yàn)證沒(méi)有通過(guò)(注:可能原因之一)輸出錯(cuò)誤提示信息 
  4.     exit($Article->getError()); 
  5. }else
  6.     // 驗(yàn)證通過(guò),繼續(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ì)參見(jiàn)《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ò)誤!')

可見(jiàn),只需幾行簡(jiǎn)單的代碼,就實(shí)現(xiàn)了各種不同方式的表單驗(yàn)證,靈活使用 ThinkPHP 自動(dòng)驗(yàn)證,可以讓開(kāi)發(fā)過(guò)程事半功倍.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 喜德县| 德昌县| 峨眉山市| 阿城市| 磴口县| 宁武县| 思南县| 锡林郭勒盟| 乐至县| 怀宁县| 喜德县| 郸城县| 安福县| 长乐市| 梁河县| 德令哈市| 台东县| 玛沁县| 建湖县| 土默特右旗| 沙河市| 安吉县| 徐闻县| 河北区| 盐山县| 汉沽区| 吉木乃县| 乌鲁木齐县| 镇安县| 容城县| 肥乡县| 丽江市| 浦城县| 郴州市| 大同市| 大庆市| 开化县| 无棣县| 奉新县| 黑河市| 杭锦旗|