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 相关文章推荐
第十一节--重载
Nov 16 PHP
phpMyAdmin 安装及问题总结
May 28 PHP
供参考的 php 学习提高路线分享
Oct 23 PHP
php中url传递中文字符,特殊危险字符的解决方法
Aug 17 PHP
php调用mysql存储过程实例分析
Dec 29 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
Jan 19 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
Jun 09 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
php实现的三个常用加密解密功能函数示例
Nov 06 PHP
laravel Model 执行事务的实现
Oct 10 PHP
phpstudy2020搭建站点的实现示例
Oct 30 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
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
file_get_contents(&quot;php://input&quot;, &quot;r&quot;)实例介绍
2013/07/01 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
php实现Mongodb自定义方式生成自增ID的方法
2015/03/23 PHP
PHP框架性能测试报告
2016/05/08 PHP
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
jQuery Real Person验证码插件防止表单自动提交
2015/11/06 Javascript
js实现点击图片自动提交action的简单方法
2016/10/16 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
2017/01/19 Javascript
javascript深拷贝和浅拷贝详解
2017/02/14 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
jQuery pagination分页示例详解
2018/10/23 jQuery
JavaScript实现简易计算器小功能
2020/10/22 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
Python入门篇之条件、循环
2014/10/17 Python
浅析Python 中整型对象存储的位置
2016/05/16 Python
Python如何操作docker redis过程解析
2020/08/10 Python
Python collections模块的使用方法
2020/10/09 Python
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
.net软件工程师应聘上机试题
2015/03/10 面试题
竞聘书格式及范文
2014/03/31 职场文书
百日安全活动总结
2014/05/04 职场文书
给市场的环保建议书
2014/05/14 职场文书
经济国贸专业求职信
2014/06/18 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
2014年财政局工作总结
2014/12/09 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
如何用PHP websocket实现网页实时聊天
2021/05/26 PHP
Pytorch GPU内存占用很高,但是利用率很低如何解决
2021/06/01 Python
Python机器学习应用之工业蒸汽数据分析篇详解
2022/01/18 Python
golang为什么要统一错误处理
2022/04/03 Golang
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android