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 执行系统外部命令 system() exec() passthru()
Aug 11 PHP
通过具体程序来理解PHP里面的抽象类
Jan 28 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
Nov 01 PHP
第六章 php目录与文件操作
Dec 30 PHP
php 阴历-农历-转换类代码
Jan 16 PHP
PHP常用数组函数介绍
Jul 28 PHP
10个简化PHP开发的工具
Dec 25 PHP
PHP对象、模式与实践之高级特性分析
Dec 08 PHP
PHP处理bmp格式图片的方法分析
Jul 04 PHP
ThinkPHP框架表单验证操作方法
Jul 19 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 PHP
PHP中类与对象功能、用法实例解读
Mar 27 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图片验证码代码
2008/03/27 PHP
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
PHP实现对文本数据库的常用操作方法实例演示
2014/07/04 PHP
thinkphp3.0输出重复两次的解决方法
2014/12/19 PHP
php数组键值用法实例分析
2015/02/27 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
解决js正则匹配换行问题实现代码
2012/12/10 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
解析页面加载与js函数的执行 onload or ready
2013/12/12 Javascript
javascript每日必学之继承
2016/02/23 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
2016/06/07 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
2017/01/19 Javascript
angular.js中解决跨域问题的三种方式
2017/07/12 Javascript
详解Node.js利用node-git-server快速搭建git服务器
2017/09/27 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
使用原生js编写一个简单的框选功能方法
2019/05/13 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
2020/06/11 Javascript
微信小程序 button样式设置为图片的方法
2020/06/19 Javascript
基于javascript原生判断DOM是否加载完毕
2020/10/14 Javascript
Python列出一个文件夹及其子目录的所有文件
2016/06/30 Python
Python实现希尔排序算法的原理与用法实例分析
2017/11/23 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
python把转列表为集合的方法
2019/06/28 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
2019/12/10 Python
pyqt5中动画的使用详解
2020/04/01 Python
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
如何用Java判断一个文件或目录是否存在
2012/11/19 面试题
大学生年度自我鉴定
2013/10/31 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP
PostgreSQL之连接失败的问题及解决
2023/05/08 PostgreSQL