Laravel5.5中使用FormRequest自定義表單驗證


什么是Form Request

Laravel中,每一個請求都會被封裝為一個Request對象,Form Request對象就是包含了額外驗證邏輯(以及訪問權限控制)的自定義Request類。

如何使用Form Request做表單驗證

Laravel提供了生成Form RequestArtisan命令:

php artisan make:request UserPost

於是就生成了app/Http/Requests/UserPost.php,讓我們來分析一下內容:

 

<?php
namespace App\Http\Request;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;
use \Illuminate\Contracts\Validation\Validator;
Class UserPost extends FormRequest
{
/**
* 重寫方法:返回數據的指定
* @param Validator $validator
*/
protected function failedValidation(Validator $validator) {
$error= $validator->errors()->all();
throw new HttpResponseException(response()->json(['code'=>400,'msg'=>'數據校驗失敗','data'=>$error[0]],500));
}
        protected $rules = [ ‘id’ => ‘required|integer’];
        public function authorize(){// 這個方法用來控制訪問權限,例如禁止訪問
                return true;// 注意!這里默認是false,記得改成true
        }
        public function rules(){//返回驗證規則數組,也就是Validator的驗證規則
               $rules = [];
               if(FormRequest::getPathInfo() == ‘/api/test/test’){
                       $rules = $this->rules;
               }
               return $fules;
        }
}

在Controller中使用:app/Http/Controller /UserController.php

 

<?php
namespace App\Http\Request;
use App\Http\Request\UserPost;
Class UserController extends Controller
{
        public function test(UserPost $request){
        }
}

配置自定義校驗規則:app/Providers/AppServiceProvider.php

 

配置校驗:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM