




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第如何優(yōu)雅的使用laravel的validator驗(yàn)證方法web開發(fā)過(guò)程中經(jīng)常會(huì)需要進(jìn)行參數(shù)驗(yàn)證,laravel中我們常用validator或者request這兩種方法來(lái)進(jìn)行驗(yàn)證,但是這兩種驗(yàn)證都不是很方便進(jìn)行自定義提示信息,自定義驗(yàn)證規(guī)則,所以下面來(lái)介紹一種很方便的用法:
新建抽象類
namespaceApp\Http\Validators;
useValidator;
abstractclassAbstractValidator
*Validator
*@var\Illuminate\Validation\Factory
protected$validator;
*Validationdatakey=valuearray
*@vararray
protected$data=array();
*Validationerrors
*@vararray
protected$errors=array();
*Validationrules
*@vararray
protected$rules=array();
*Validationmessages
*@vararray
protected$messages=array();
*Validationcodes
*@vararray
protected$codes=array();
publicfunction__construct(array$data)
$this-data=$data;
$this-before();
$this-validator=Validator::make($this-data,$this-rules,$this-messages);
$this-after();
*Setdatatovalidate
*@returnvalidator
publicfunctiongetValidator()
return$this-validator;
*Setdatatovalidate
*@return$this
publicfunctionwith(array$data)
$this-data=$data;
$this-before();
$this-validator=$this-validator-make($this-data,$this-rules,$this-messages);
$this-after();
return$this;
*Validationpassesorfails
*@returnboolean
publicfunctionpasses()
if($this-validator-fails()){
$this-errors=$this-validator-messages();
returnfalse;
returntrue;
*Returnerrors,ifany
*@returnarray
publicfunctionerrors()
return$this-errors;
*Returnerrorscodes,ifany
*@returnarray
publicfunctiongetCodes()
return$this-codes;
*getRules
*@returnarray
publicfunctiongetRules()
return$this-rules;
*getData
*@returnarray
publicfunctiongetData()
return$this-data;
*getErrors
*@returnarray
publicfunctiongetErrors()
return$this-errors;
*getMessages
*@returnarray
publicfunctiongetMessages()
return$this-messages;
*setRule
*@paramstring$key
*@paramstring$value
*@return$this
publicfunctionsetRule($key,$value)
$this-rules[$key]=$value;
return$this;
*emptyRules
*@return$this
publicfunctionemptyRules()
$this-rules=array();
return$this;
*sometimes
*@paramstring$attribute
*@paramstring|array$rules
*@paramcallable$callback
*@return$this
publicfunctionsometimes($attribute,$rules,callable$callback)
$this-validator-sometimes($attribute,$rules,$callback);
return$this;
*resolver
*@paramClosure$resolver
*@return$this
publicfunctionresolver(Closure$resolver)
Validator::resolver($resolver);
return$this;
*replacer
*@paramClosure$resolver
*@return$this
publicfunctionreplacer($replace,Closure$resolver)
Validator::replacer($replace,$resolver);
return$this;
*extendImplicit
*@paramClosure$resolver
*@return$this
publicfunctionextendImplicit($extendImplicit,Closure$resolver)
Validator::extendImplicit($extendImplicit,$resolver);
return$this;
*extend
*@paramstring$rule
*@param\Closure|string$extension
*@paramstring$message
*@return$this
publicfunctionextend($rule,$extension,$message=null)
Validator::extend($rule,$extension,$message);
return$this;
*before(extend(),resolver())
*@return$this
publicfunctionbefore()
*after(sometimes())
*@return$this
publicfunctionafter()
新建中間件
namespaceApp\Http\Middleware;
useClosure;
use\Illuminate\Http\Request;
classValidateAdminMiddleware
*Thisnamespaceisappliedtothecontrollerroutesinyourroutesfile.
*Inaddition,itissetastheURLgenerator'srootnamespace.
*@varstring
protected$namespace='App\Http\Validators';
*Handleanincomingrequest.
*@param\Illuminate\Http\Request$request
*@param\Closure$next
*@returnmixed
publicfunctionhandle(Request$request,Closure$next,$validator=null)
if($request-isMethod('POST')){
$type=$request-segment(1);
if($validator){
$validator=$this-namespace.'\\'.studly_case($type).'\\'.studly_case($validator).'Validator';
$validator=new$validator($request-all());
if(!$validator-passes()){
if($request-isAjax()){
return$validator-errors()-first();
}else{
returnredirect()-back()
-withErrors($validator-getValidator())
-withInput();
return$next($request);
新建TestTestValidator
namespaceApp\Http\Validators\Admin;
useApp\Http\Validators\AbstractValidator;
classTestValidatorextendsAbstractValidator
*Validationrules
*@varArray
protected$rules=array(
'name'=['required','test','min:1'],
*Validationmessages
*@varArray
protected$messages=array(
'name.required'='必填',
'name.min'='最少1個(gè)字符',
'name.test'='測(cè)試',
*自定義驗(yàn)證規(guī)則或者擴(kuò)展Validator類
publicfun
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人合同擔(dān)保協(xié)議書
- 勞務(wù)公司合同協(xié)議書
- 鋁礦銷售合同協(xié)議書
- 紡織品設(shè)計(jì)師考試與市場(chǎng)需求的聯(lián)系試題及答案
- 合同協(xié)議書與合作協(xié)議書
- 轉(zhuǎn)崗協(xié)議書格式
- 車庫(kù)買賣正規(guī)合同協(xié)議
- 車用尿素購(gòu)銷合同協(xié)議
- 退房訂金協(xié)議書范本
- 車輛取走協(xié)議書范本
- 高中物理3-3熱學(xué)練習(xí)題(含答案)
- 白酒釀造工藝課件
- 關(guān)節(jié)鏡技術(shù)在骨科的應(yīng)用
- DB32-T 3916-2020建筑地基基礎(chǔ)檢測(cè)規(guī)程-(高清現(xiàn)行)
- 2022年執(zhí)業(yè)醫(yī)師證件租賃協(xié)議書
- 太上三官寶經(jīng)(共12頁(yè))
- Q∕GDW 11445-2015 國(guó)家電網(wǎng)公司管理信息系統(tǒng)安全基線要求
- java考試管理系統(tǒng)源代碼開題報(bào)告外文翻譯英文文獻(xiàn)計(jì)001
- 人教版九年級(jí)歷史中考【政治經(jīng)濟(jì)專題復(fù)習(xí)課件44張】(共44張)
- T∕CSEA 6-2018 鋅鎳合金電鍍技術(shù)條件
- 《大學(xué)英語(yǔ)三》題庫(kù)及答案
評(píng)論
0/150
提交評(píng)論