laravel開(kāi)發(fā):如何使用laravel validation驗(yàn)證請(qǐng)求數(shù)據(jù)?
Laravel作為目前最流行的php框架之一,其原因之一就在于它提供了很多優(yōu)秀的組件,其中之一是Laravel Validation。在Web開(kāi)發(fā)過(guò)程中,我們常常需要驗(yàn)證從前端提交的數(shù)據(jù)是否符合規(guī)范,如表單提交等,這時(shí)候就需要使用Laravel Validation組件來(lái)進(jìn)行數(shù)據(jù)驗(yàn)證。
本文將介紹Laravel Validation的基本用法及示例。
- 引入Validation
在Controller中引入Validator:
use IlluminateSupportFacadesValidator;
- 驗(yàn)證規(guī)則
Laravel Validation支持多種不同的驗(yàn)證規(guī)則,包括必填、郵箱、日期等。我們可以根據(jù)需求進(jìn)行選擇。下表列舉了一些常用的規(guī)則:
規(guī)則 | 說(shuō)明 |
---|---|
required | 必填 |
郵箱格式 | |
date | 日期格式 |
Regex | 正則匹配 |
max | 最大長(zhǎng)度 |
min | 最小長(zhǎng)度 |
- 驗(yàn)證器構(gòu)造
使用Laravel Validaton需要先構(gòu)造一個(gè)驗(yàn)證器,可以通過(guò)不同的方式進(jìn)行構(gòu)造,如:
- 使用Validator門(mén)面的make方法:
public function validate(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required|max:255', 'email' => 'required|email|unique:users|max:255', 'password' => 'required|min:6|max:255', ]); if ($validator->fails()) { return redirect('register') ->withErrors($validator) ->withInput(); } // 驗(yàn)證通過(guò),執(zhí)行代碼 }
- 使用request驗(yàn)證:
public function rules() { return [ 'name' => 'required|max:255', 'email' => 'required|email|unique:users|max:255', 'password' => 'required|min:6|max:255', ]; } public function register(Request $request) { $this->validate($request, $this->rules()); // 驗(yàn)證通過(guò),執(zhí)行代碼 }
- 驗(yàn)證錯(cuò)誤信息
如果驗(yàn)證失敗,可以通過(guò)withErrors方法來(lái)獲取錯(cuò)誤信息,如:
if ($validator->fails()) { return redirect('register') ->withErrors($validator) ->withInput(); }
然后在視圖中調(diào)用$errors變量即可獲取對(duì)應(yīng)錯(cuò)誤信息:
@if ($errors->has('name')) <span class="help-block"> <strong>{{ $errors->first('name') }}</strong> </span> @endif
- 自定義錯(cuò)誤信息
在驗(yàn)證器構(gòu)造的第二個(gè)參數(shù)中,可以通過(guò)設(shè)置自定義錯(cuò)誤信息來(lái)對(duì)驗(yàn)證錯(cuò)誤進(jìn)行更加具體的提示,如:
public function rules() { return [ 'name' => 'required|max:255', 'email' => 'required|email|unique:users|max:255', 'password' => 'required|min:6|max:255', ]; } public function messages() { return [ 'name.required' => '名稱(chēng)不能為空', 'email.required' => '郵箱不能為空', 'email.email' => '請(qǐng)輸入正確的郵箱地址', 'email.unique' => '該郵箱已經(jīng)被注冊(cè)', 'password.required' => '密碼不能為空', 'password.max' => '密碼長(zhǎng)度不能超過(guò):max個(gè)字符', ]; } public function register(Request $request) { $validator = Validator::make($request->all(), $this->rules(), $this->messages()); if ($validator->fails()) { return redirect('register') ->withErrors($validator) ->withInput(); } // 驗(yàn)證通過(guò),執(zhí)行代碼 }
本文以上述代碼為例進(jìn)行了Laravel Validation的基本介紹,希望本文能夠幫助到大家。
參考資料:
《Laravel框架》