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开发文件系统实例讲解
Oct 09 PHP
php 文件上传实例代码
Apr 19 PHP
关于使用coreseek并为其做分页的介绍
Jun 21 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
Jan 07 PHP
Apache启动报错No space left on device: AH00023该怎么解决
Oct 16 PHP
thinkphp微信开发(消息加密解密)
Dec 02 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
Feb 15 PHP
php中使用websocket详解
Sep 23 PHP
php+resumablejs实现的分块上传 断点续传功能示例
Apr 18 PHP
phpMyAdmin通过密码漏洞留后门文件
Nov 20 PHP
PHP getName()函数讲解
Feb 03 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
Mar 02 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 #PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 #PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 #PHP
laravel框架使用极光推送消息操作示例
Feb 15 #PHP
laravel框架使用阿里云短信发送消息操作示例
Feb 15 #PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 #PHP
PHP 枚举类型的管理与设计知识点总结
Feb 13 #PHP
You might like
php输出形式实例整理
2020/05/05 PHP
Prototype Template对象 学习
2009/07/19 Javascript
IE 当eval遇上function的处理
2011/08/09 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
js 实现菜单上下显示附效果图
2013/11/21 Javascript
js浏览器本地存储store.js介绍及应用
2014/05/13 Javascript
浅析JS动态创建元素【两种方法】
2016/04/20 Javascript
通过原生JS实现为元素添加事件的方法
2016/11/23 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
vue脚手架搭建项目的兼容性配置详解
2018/07/17 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
2018/10/12 Javascript
vue+elementUI组件table实现前端分页功能
2020/11/15 Javascript
JavaScript事件冒泡机制原理实例解析
2020/01/14 Javascript
react 生命周期实例分析
2020/05/18 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
[01:03:56]Mineski vs TNC 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
[48:51]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第一场 11.28
2020/12/02 DOTA
pycharm远程调试openstack的图文教程
2017/11/21 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
python数据化运营的重要意义
2019/11/25 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
Python包资源下载路径报404解决方案
2020/11/05 Python
python 实现一个简单的线性回归案例
2020/12/17 Python
HTML5实现签到 功能
2018/10/09 HTML / CSS
Oakley官网:运动太阳镜、雪镜和服装
2016/09/30 全球购物
Vertbaudet西班牙网上商店:婴儿服装、童装、母婴用品和儿童家具
2019/10/16 全球购物
美国鲜花递送:UrbanStems
2021/01/04 全球购物
师德师风个人反思
2014/04/28 职场文书
初中班级口号
2014/06/09 职场文书
房屋授权委托书范本
2014/10/07 职场文书
《比的意义》教学反思
2016/02/18 职场文书
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP
分享node.js实现简单登录注册的具体代码
2022/04/26 NodeJs