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 smarty函数扩展
Mar 15 PHP
php做下载文件的实现代码及文件名中乱码解决方法
Feb 03 PHP
PHP 中关于ord($str)&amp;gt;0x80的详细说明
Sep 23 PHP
解析Linux下Varnish缓存的配置优化
Jun 20 PHP
ThinkPHP3.1新特性之内容解析输出详解
Jun 19 PHP
php数组索引的Key加引号和不加引号的区别
Aug 19 PHP
php对象和数组相互转换的方法
May 12 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
Dec 09 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
Dec 05 PHP
mac系统下安装多个php并自由切换的方法详解
Apr 21 PHP
php生成条形码的图片的实例详解
Sep 13 PHP
thinkPHP框架实现多表查询的方法
Jun 14 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
IIS6的PHP最佳配置方法
2007/03/19 PHP
PHP实时显示输出
2008/10/02 PHP
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
2010/04/15 PHP
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
浅谈php中urlencode与rawurlencode的区别
2016/09/05 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
JavaScript中合并数组的N种方法
2014/09/16 Javascript
基于javascript实现简单的抽奖系统
2020/04/15 Javascript
JQuery插件Marquee.js实现无缝滚动效果
2016/04/26 Javascript
jQuery+Ajax实现限制查询间隔的方法
2016/06/07 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
jquery自动补齐功能插件flexselect用法示例
2016/08/06 Javascript
JavaScript requestAnimationFrame动画详解
2017/09/14 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
Vue 一键清空表单的实现方法
2020/02/07 Javascript
three.js 将图片马赛克化的示例代码
2020/07/31 Javascript
Ruby元编程基础学习笔记整理
2016/07/02 Python
python实现下载整个ftp目录的方法
2017/01/17 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
基于sklearn实现Bagging算法(python)
2019/07/11 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
Philosophy美国官网:美国美容品牌
2016/08/15 全球购物
小女主人连衣裙:Little Mistress
2017/07/10 全球购物
煤矿班组长的职责
2013/12/25 职场文书
小学生考试获奖感言
2014/01/30 职场文书
大学生毕业自我鉴定范文
2014/02/03 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
党支部半年考察意见
2015/06/01 职场文书
新党员入党决心书
2015/09/22 职场文书
银行工作心得体会范文
2016/01/23 职场文书
Nginx tp3.2.3 404问题解决方案
2021/03/31 Servers
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android