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中获取变量的变量名的一段代码的bug分析
Jul 07 PHP
APACHE的AcceptPathInfo指令使用介绍
Jan 18 PHP
浅析php中抽象类和接口的概念以及区别
Jun 27 PHP
php中{}大括号是什么意思
Dec 01 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
Jul 02 PHP
PHP实现模仿socket请求返回页面的方法
Nov 04 PHP
thinkphp备份数据库的方法分享
Jan 04 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
Nov 24 PHP
PHP中非常有用却鲜有人知的函数集锦
Aug 17 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
Feb 10 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
Mar 03 PHP
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
Apr 11 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获取类中常量,属性,及方法列表的方法
2009/04/09 PHP
PHP闭包函数传参及使用外部变量的方法
2016/03/15 PHP
用javascript自动显示最后更新时间
2007/03/15 Javascript
cookie中的path与domain属性详解
2013/12/18 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
js分页工具实例
2015/01/28 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
Javascript的表单验证长度
2016/03/16 Javascript
自动化测试读写64位操作系统的注册表
2016/08/15 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
如何用js判断dom是否有存在某class的值
2017/02/13 Javascript
javascript回调函数详解
2018/02/06 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
用js实现放大镜效果
2020/10/28 Javascript
[01:02:48]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Liquid
2018/04/03 DOTA
python实现可将字符转换成大写的tcp服务器实例
2015/04/29 Python
高效测试用例组织算法pairwise之Python实现方法
2017/07/19 Python
Python小工具之消耗系统指定大小内存的方法
2018/12/03 Python
Python实现删除排序数组中重复项的两种方法示例
2019/01/31 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
tensorflow生成多个tfrecord文件实例
2020/02/17 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
Python定义一个函数的方法
2020/06/15 Python
试述DBMS的主要功能
2016/11/13 面试题
《有趣的发现》教学反思
2014/04/15 职场文书
关于青春的演讲稿
2014/05/05 职场文书
同事去世追悼词
2015/06/23 职场文书
导游词之西安骊山
2019/12/20 职场文书
Python基于百度AI实现抓取表情包
2021/06/27 Python
SQL Server代理:理解SQL代理错误日志处理方法
2021/06/30 SQL Server
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android