Laravel框架FormRequest中重寫錯誤處理

laravel 框架中默認的validate驗證,在處理錯誤的時候,默認是返回上一頁,當爲ajax的時候纔會返回Json。如果我們要一直返回Json的話,那麼需要重寫錯誤處理

如下:在Requests目錄只用 新建BaseRequest

image.png

代碼如下

<?php
/**
 * @文件名稱: BaseRequest.php.
 * @author: daisc
 * @email: [email protected]
 * @Date: 2019/1/8
 */

namespace App\Http\Requests\Front;


use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;

class BaseRequest extends FormRequest
{

    public function failedValidation($validator)
    {

        $error= $validator->errors()->all();
       // $error = $validator;

        throw  new HttpResponseException(response()->json(['code'=>1,'message'=>$error[0]]));

    }


}

重寫了failedValidation方法,將拋出錯誤處理爲了json格式的。
然後在自定義的處理驗證類中,繼承該類就行了,
如:RegisterForm

<?php

namespace App\Http\Requests\Front;



class RegisterForm extends BaseRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'phone'=>'required|regex:"^1\d{10}"',
            'email' => 'required|email',
            'password'=>'required|confirmed'
        ];
    }

    public function messages()
    {
        return [
            'phone.required'=>'手機號不能爲空',
            'phone.regex'=>'請輸入正確的手機號',
        ];

    }



}

當我們在控制器中調用RegisterForm的時候,就回返回Json格式的錯誤信息。
不分是否是AJAX

image.png

原文地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章