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,ajax实现分页
Mar 27 PHP
php 删除无限级目录与文件代码共享
Nov 22 PHP
php strtotime 函数UNIX时间戳
Jan 14 PHP
过滤掉PHP数组中的重复值的实现代码
Jul 17 PHP
php中使用gd库实现远程图片下载实例
May 12 PHP
PHP实现通过URL提取根域名
Mar 31 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
Sep 22 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
Dec 28 PHP
详解使用php调用微信接口上传永久素材
Apr 11 PHP
PHP获取数组中指定的一列实例
Dec 27 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
Feb 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
BBS(php &amp; mysql)完整版(一)
2006/10/09 PHP
php学习之运算符相关概念
2011/06/09 PHP
php 调试利器debug_print_backtrace()
2012/07/23 PHP
php全角字符转换为半角函数
2014/02/07 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
JQuery 学习笔记 选择器之三
2009/07/23 Javascript
javascript复制对象使用说明
2011/06/28 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
20行代码实现的一个CSS覆盖率测试脚本
2013/07/07 Javascript
jquery select 设置默认选中的示例代码
2014/02/07 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
JavaScript实现审核流程状态的动态显示进度条
2017/03/15 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
js如何编写简单的ajax方法库
2017/08/02 Javascript
详解vue 数据传递的方法
2018/04/19 Javascript
在vue中使用Autoprefixed的方法
2018/07/27 Javascript
jquery实现上传图片功能
2020/06/29 jQuery
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
python比较两个列表是否相等的方法
2015/07/28 Python
python中datetime模块中strftime/strptime函数的使用
2018/07/03 Python
pycharm打开命令行或Terminal的方法
2019/01/16 Python
浅析Python 读取图像文件的性能对比
2019/03/07 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
纯css3实现思维导图样式示例
2018/11/01 HTML / CSS
迪拜航空官方网站:flydubai
2017/04/20 全球购物
Harrods英国:世界领先的奢侈品百货商店
2020/09/23 全球购物
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
函授本科毕业自我鉴定
2013/10/09 职场文书
党的生日活动方案
2014/08/15 职场文书
邓小平理论心得体会
2014/09/09 职场文书
2017年大学生寒假社会实践活动总结
2016/04/06 职场文书
SpringBoot 整合mongoDB并自定义连接池的示例代码
2022/02/28 MongoDB