Laravel框架FormRequest中重写错误处理

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

原文地址

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理