什么是Form Request
在Laravel
中,每一個請求都會被封裝為一個Request
對象,Form Request
對象就是包含了額外驗證邏輯(以及訪問權限控制)的自定義Request
類。
如何使用Form Request做表單驗證
Laravel
提供了生成Form Request
的Artisan
命令:
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
:
配置校驗: