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 相关文章推荐
mysql总结之explain
Feb 27 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
Jun 28 PHP
解析PHP 5.5 新特性
Jul 02 PHP
php调用MySQL存储过程的方法集合(推荐)
Jul 03 PHP
PHP系统命令函数使用分析
Jul 05 PHP
php结合ajax实现赞、顶、踩功能实例
May 12 PHP
php导入excel文件到mysql数据库的方法
Jan 14 PHP
8个必备的PHP功能开发
Oct 02 PHP
PHP结合Jquery和ajax实现瀑布流特效
Jan 07 PHP
Laravel重写用户登录简单示例
Oct 08 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
Dec 04 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
dedecms采集中可以过滤多行代码的正则表达式
2007/03/17 PHP
关于在php.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
PHP 开发环境配置(Zend Server安装)
2010/04/28 PHP
PHP下打开URL地址的几种方法小结
2010/05/16 PHP
php中用加号与用array_merge合并数组的区别深入分析
2013/06/03 PHP
解析左右值无限分类的实现算法
2013/06/20 PHP
刷新PHP缓冲区为你的站点加速
2015/10/10 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
PHP入门教程之上传文件实例详解
2016/09/11 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
Javascript调用C#代码
2011/01/17 Javascript
让人期待的2011年度最佳 jQuery 插件分享
2012/03/16 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
jquery实现图片上传前本地预览
2017/04/28 jQuery
微信小程序自定义导航教程(兼容各种手机)
2018/12/12 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
vue.js iview打包上线后字体图标不显示解决办法
2020/01/20 Javascript
python的Template使用指南
2014/09/11 Python
pandas对指定列进行填充的方法
2018/04/11 Python
python挖矿算力测试程序详解
2019/07/03 Python
Python numpy数组转置与轴变换
2019/11/15 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
Python flask路由间传递变量实例详解
2020/06/03 Python
Kiwi.com中国:找到特价机票并发现新目的地
2019/10/27 全球购物
德国帽子专家:Hutshopping
2019/11/03 全球购物
如何做好总经理助理
2013/11/12 职场文书
2014年个人委托书范本
2014/10/13 职场文书
2015年加油站站长工作总结
2015/05/27 职场文书
小学音乐课教学反思
2016/02/18 职场文书
Win11任务栏太宽了怎么办?一招解决Win11任务栏太宽问题
2021/11/21 数码科技
MongoDB数据库部署环境准备及使用介绍
2022/03/21 MongoDB