Laravel框架FormRequest中重写错误处理的方法

laravel 框架中默认的validate验证,在处理错误的时候,默认是返回上一页,当为ajax的时候才会返回Json。如果我们要一直返回Json的话,那么需要重写错误处理

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

Laravel框架FormRequest中重写错误处理的方法

代码如下

  <?php  /**   * @文件名称: BaseRequest.php.   * @author: daisc   * @email: jiumengfadian@live.com   * @Date: 2019/1/8   */    namespace AppHttpRequestsFront;    use IlluminateFoundationHttpFormRequest;  use IlluminateHttpExceptionsHttpResponseException;    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 AppHttpRequestsFront;    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:"^1d{10}"',        'email' => 'required|email',        'password'=>'required|confirmed'      ];    }      public function messages()    {      return [        'phone.required'=>'手机号不能为空',        'phone.regex'=>'请输入正确的手机号',      ];      }    }

当我们在控制器中调用RegisterForm的时候,就回返回Json格式的错误信息。

不分是否是AJAX

Laravel框架FormRequest中重写错误处理的方法

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论