php教程

超轻量级php框架startmvc

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

更新时间:2020-04-03 03:59 作者:startmvc
laravel框架中默认的validate验证,在处理错误的时候,默认是返回上一页,当为ajax的时候才

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。