laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例


Posted in PHP onFebruary 18, 2020

本文实例讲述了laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作.分享给大家供大家参考,具体如下:

通常在项目中,我们会对大量的前端提交过来的表单进行验证,如果不通过,则返回错误信息。

前端为了更好的体验,都使用ajax进行表单提交,虽然 validate() 方法能够根据前端的不同请求方式,返回不同的结果。

但是返回的json格式并不是我们想要的,这个时候,我们就需要自定义返回错误结果。

先创建一个表单请求类:

php artisan make:request TestRequest

然后在 rules()messages() 方法里填写自已的验证规则和消息

<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;
class TestRequest extends FormRequest
{
  /**
   * 控制访问权限
   */
  public function authorize()
  {
    //注意,默认是false,改成true
    return true;
  }
  /**
   * 验证规则
   */
  public function rules()
  {
    return [
      'name' => 'required',
      'pwd' => 'required',
    ];
  }
  /**
   * 验证消息
   */
  public function messages()
  {
    return [
      'name.required' => '姓名必填',
      'pwd.required' => '密码必填',
    ];
  }
}

注意,父类 FormRequest中的 failedValidation() 方法用来处理验证失败,我们重写父类方法,来实现自已的返回。

public function failedValidation(Validator $validator)
{
  throw (new HttpResponseException(response()->json([
    'status_code' => 500,
    'message' => '请求错误',
    'data' => $validator->errors()->first(),
  ], 200)));
}

注意 failedValidation() 方法的 $validator 参数是 Illuminate\Contracts\Validation\Validator 对象,不是 Illuminate\Validation\Validator,不要搞错了。

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
Oct 09 PHP
php 三维饼图的实现代码
Sep 28 PHP
php中设置多级目录session的问题
Aug 08 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
PHP函数microtime()用法与说明
Dec 04 PHP
php求正负数数组中连续元素最大值示例
Apr 11 PHP
PHP中spl_autoload_register()函数用法实例详解
Jul 18 PHP
php array_slice 取出数组中的一段序列实例
Nov 04 PHP
详解PHP用substr函数截取字符串中的某部分
Dec 03 PHP
CodeIgniter框架常见用法工作总结
Mar 16 PHP
laravel框架邮箱认证实现方法详解
Nov 22 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 #PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 #PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 #PHP
php 函数中静态变量使用的问题实例分析
Mar 05 #PHP
php多进程中的阻塞与非阻塞操作实例分析
Mar 04 #PHP
php 中的信号处理操作实例详解
Mar 04 #PHP
php libevent 功能与使用方法详解
Mar 04 #PHP
You might like
PHP之生成GIF动画的实现方法
2013/06/07 PHP
PHP用身份证号获取星座和生肖的方法
2013/11/07 PHP
php利用单例模式实现日志处理类库
2014/02/10 PHP
MyEclipse常用配置图文教程
2014/09/11 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
jquery ajax请求方式与提示用户正在处理请稍等
2014/09/01 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
AngularJS语法详解(续)
2015/01/23 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
2015/06/18 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
AngularJS入门教程之AngularJS 模板
2016/08/18 Javascript
你真的了解BOM中的history对象吗
2017/02/13 Javascript
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
JS实现的JSON序列化操作简单示例
2018/07/02 Javascript
vue拖拽排序插件vuedraggable使用方法详解
2020/08/21 Javascript
小程序实现抽奖动画
2020/04/16 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
Vue中import from的来源及省略后缀与加载文件夹问题
2020/02/09 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
2020/08/14 Javascript
vue+iview实现分页及查询功能
2020/11/17 Vue.js
[01:44]Ti10举办地公布
2019/08/25 DOTA
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
深入理解Python中的元类(metaclass)
2015/02/14 Python
python处理Excel xlrd的简单使用
2017/09/12 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
Django项目在pycharm新建的步骤方法
2021/03/02 Python
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
毕业自荐书
2013/12/09 职场文书
正规的求职信范文分享
2013/12/11 职场文书
电话客服工作职责
2014/07/27 职场文书
行政司机岗位职责
2015/04/10 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang