Laravel框架FormRequest中重写错误处理的方法
程序员文章站
2022-04-28 16:54:47
laravel 框架中默认的validate验证,在处理错误的时候,默认是返回上一页,当为ajax的时候才会返回json。如果我们要一直返回json的话,那么需要重写错误处...
laravel
框架中默认的validate
验证,在处理错误的时候,默认是返回上一页,当为ajax
的时候才会返回json
。如果我们要一直返回json
的话,那么需要重写错误处理
如下:在requests
目录只用 新建baserequest
类
代码如下
<?php /** * @文件名称: baserequest.php. * @author: daisc * @email: jiumengfadian@live.com * @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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。