一般在項目中,咱們會對大量的前端提交過來的表單進行驗證,若是不經過,則返回錯誤信息。php
前端爲了更好的體驗,都使用ajax進行表單提交,雖然 validate() 方法可以根據前端的不一樣請求方式,返回不一樣的結果。前端
可是返回的json格式並非咱們想要的,這個時候,咱們就須要自定義返回錯誤結果。ajax
先建立一個表單請求類:json
php artisan make:request TestRequest
而後在 rules() 和 messages() 方法裏填寫自已的驗證規則和消息ui
<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Contracts\Validation\Validator; use Illuminate\Http\Exceptions\HttpResponseException; class TestRequest extends FormRequest { /** * 控制訪問權限 */ public function authorize() { //注意,默認是false,改爲true return true; } /** * 驗證規則 */ public function rules() { return [ 'name' => 'required', 'pwd' => 'required', ]; } /** * 驗證消息 */ public function messages() { return [ 'name.required' => '姓名必填', 'pwd.required' => '密碼必填', ]; } }
注意,父類 FormRequest中的 failedValidation() 方法用來處理驗證失敗,咱們重寫父類方法,來實現自已的返回。spa
public function failedValidation(Validator $validator) { throw (new HttpResponseException(response()->json([ 'status_code' => 500, 'message' => '請求錯誤', 'data' => $validator->errors()->first(), ], 200))); }
注意 failedValidation() 方法的 $validator 參數是 Illuminate\Contracts\Validation\Validator 對象,不是 Illuminate\Validation\Validator,不要搞錯了。code