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 相关文章推荐
rephactor 优秀的PHP的重构工具
Jun 09 PHP
php中大括号作用介绍
Mar 22 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
Jun 14 PHP
php ImageMagick windows下安装教程
Jan 26 PHP
codeigniter中view通过循环显示数组数据的方法
Mar 20 PHP
php实现点击可刷新验证码
Nov 07 PHP
PHP封装的字符串加密解密函数
Dec 18 PHP
详解php中反射的应用
Mar 15 PHP
php生成二维码图片方法汇总
Dec 17 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
Aug 31 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
laravel使用Faker数据填充的实现方法
Apr 12 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中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
PHP生成随机密码4种方法及性能对比
2020/12/11 PHP
CSS JavaScript 实现菜单功能 改进版
2008/12/09 Javascript
javascript日期操作详解(脚本之家整理)
2015/09/05 Javascript
返回函数的JavaScript函数
2016/06/14 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
jQuery实现点击关注和取消功能
2017/07/03 jQuery
ReactNative中使用Redux架构总结
2017/12/15 Javascript
详解如何在nuxt中添加proxyTable代理
2018/08/10 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
400多行Python代码实现了一个FTP服务器
2012/05/10 Python
跟老齐学Python之关于循环的小伎俩
2014/10/02 Python
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
谈谈如何手动释放Python的内存
2016/12/17 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
Python socket实现简单聊天室
2018/04/01 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
Python GUI编程完整示例
2019/04/04 Python
关于阿里云oss获取sts凭证 app直传 python的实例
2019/08/20 Python
python输入错误后删除的方法
2019/10/12 Python
python使用 cx_Oracle 模块进行查询操作示例
2019/11/28 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
python字典setdefault方法和get方法使用实例
2019/12/25 Python
Python生成器实现简单&quot;生产者消费者&quot;模型代码实例
2020/03/27 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
一款简洁的纯css3代码实现的动画导航
2014/10/31 HTML / CSS
英国蜡烛、蜡烛配件和家居香氛购买网站:Yankee Candle
2018/12/12 全球购物
会计电算化个人自我评价
2013/11/17 职场文书
领导视察欢迎词
2014/01/15 职场文书
辩论赛主持词
2014/03/18 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP
python中的sys模块和os模块
2022/03/20 Python