主页 > 知识库 > Laravel框架FormRequest中重写错误处理的方法

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

热门标签:银行业务 电子围栏 Mysql连接数设置 服务器配置 阿里云 团购网站 科大讯飞语音识别系统 Linux服务器

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

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

您可能感兴趣的文章:
  • Laravel中使用FormRequest进行表单验证方法及问题汇总
  • Laravel框架表单验证详解
  • Laravel 5框架学习之表单验证
  • Laravel 4 初级教程之Pages、表单验证
  • laravel5.2表单验证,并显示错误信息的实例
  • Laravel框架表单验证格式化输出的方法
  • Laravel框架表单验证操作实例分析
  • Laravel5.1 框架表单验证操作实例详解
  • laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例

标签:枣庄 衡水 蚌埠 萍乡 江苏 大理 广元 衢州

巨人网络通讯声明:本文标题《Laravel框架FormRequest中重写错误处理的方法》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266