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 文本文件的读取效率
Feb 10 PHP
介绍一些PHP判断变量的函数
Apr 24 PHP
PHP设置图片文件上传大小的具体实现方法
Oct 11 PHP
discuz加密解密函数使用方法和中文注释
Jan 21 PHP
简单的php新闻发布系统教程
May 09 PHP
PHP中iconv函数转码时截断字符问题的解决方法
Jan 21 PHP
使用PHP生成PDF方法详解
Jan 23 PHP
关于PHP转换超过2038年日期出错的问题解决
Jun 28 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
Sep 05 PHP
php和vue配合使用技巧和方法
May 09 PHP
PHP defined()函数的使用图文详解
Jul 20 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 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根据身份证号码计算年龄的实例代码
2014/01/18 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
2016/07/14 PHP
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
iframe子父页面调用js函数示例
2013/11/07 Javascript
js单词形式的运算符
2014/05/06 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
JS使用eval()动态创建变量的方法
2016/06/03 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
详细谈谈AngularJS的子级作用域问题
2016/09/05 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
2016/10/10 Javascript
JS正则表达式学习之贪婪和非贪婪模式实例总结
2016/12/26 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
AngularJS集合数据遍历显示的实例
2017/12/27 Javascript
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
如何用Node写页面爬虫的工具集
2018/10/26 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
vue 导航守卫和axios拦截器有哪些区别
2020/12/19 Vue.js
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
opencv python 傅里叶变换的使用
2018/07/21 Python
Python判断一个三位数是否为水仙花数的示例
2018/11/13 Python
python中报错&quot;json.decoder.JSONDecodeError: Expecting value:&quot;的解决
2019/04/29 Python
人工神经网络算法知识点总结
2019/06/11 Python
python从内存地址上加载python对象过程详解
2020/01/08 Python
Python3实现飞机大战游戏
2020/04/24 Python
java程序员面试交流
2012/11/29 面试题
销售人员自我评价怎么写
2013/09/19 职场文书
幼儿园园长岗位职责
2013/11/26 职场文书
导师推荐信范文
2014/05/09 职场文书
党的群众路线个人对照检查材料
2014/09/23 职场文书
vue修饰符.capture和.self的区别
2022/04/22 Vue.js
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS
MySQL数据库查询之多表查询总结
2022/08/05 MySQL