麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(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ā)表

圖片精選

主站蜘蛛池模板: 精品一区二区三区在线观看视频 | 精品国产91久久久 | 精品国产成人 | 在线成人影视 | 欧美黄色一级片视频 | 亚洲第一激情网 | 越南一级黄色片 | 操操操日日日干干干 | 斗罗破苍穹在线观看免费完整观看 | 日韩在线播放第一页 | 91久久久国产精品 | 黄色18网站 | www.91成人| av电影免费在线 | 狠狠操夜夜爱 | 精品黑人一区二区三区国语馆 | 日本中文不卡视频 | 国产深夜福利视频在线播放 | 精品国产一区二区三区在线观看 | 久久经典免费视频 | 亚洲精品成人在线视频 | 久久精品视频首页 | 国产羞羞视频在线观看免费应用 | 欧美a视频 | 99欧美视频 | www.54271.com| 第一区免费在线观看 | 黄色伊人网站 | av国产在线被下药迷网站 | 久久国产精品免费视频 | javhdfreejaⅴhd| 久久久精彩 | 国产一区二区精品在线观看 | 欧美性色黄大片www 成人免费网站在线观看 | 久久久久久久久91 | 欧美一级高清免费 | 久久综合综合久久 | 国产成人精品免费视频大全办公室 | 国产一级毛片高清视频完整版 | 久久久婷婷一区二区三区不卡 | 91一区二区三区久久久久国产乱 |