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 正则表达式小结
Aug 31 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
Apr 07 PHP
php实现简单洗牌算法
Jun 18 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
Jun 19 PHP
php socket实现的聊天室代码分享
Aug 16 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
Mar 24 PHP
php实现按天数、星期、月份查询的搜索框
May 02 PHP
Linux平台php命令行程序处理管道数据的方法
Nov 10 PHP
PHP实现的多维数组去重操作示例
Jul 21 PHP
PHP使用函数用法详解
Sep 30 PHP
PHP Swoole异步MySQL客户端实现方法示例
Oct 24 PHP
如何在Laravel之外使用illuminate组件详解
Sep 20 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读取目录下所有文件的代码
2008/01/07 PHP
php中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
2014/09/22 PHP
Mac OS下配置PHP+MySql环境
2015/02/25 PHP
php短网址和数字之间相互转换的方法
2015/03/13 PHP
经典PHP加密解密函数Authcode()修复版代码
2015/04/05 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
PHP机器学习库php-ml的简单测试和使用方法
2017/07/14 PHP
PHP 爬取网页的主要方法
2018/07/13 PHP
Laravel创建数据库表结构的例子
2019/10/09 PHP
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
javascript简单实现表格行间隔显示颜色并高亮显示
2013/11/29 Javascript
js实例属性和原型属性示例详解
2014/11/23 Javascript
javascript动态创建及删除元素的方法
2014/12/22 Javascript
jQuery获取上传文件的名称的正则表达式
2015/05/21 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
图文介绍Vue父组件向子组件传值
2018/02/17 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
2018/08/09 Javascript
Vue CLI3 开启gzip压缩文件的方式
2018/09/30 Javascript
你可能不知道的CORS跨域资源共享
2019/03/13 Javascript
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
跟老齐学Python之集合的关系
2014/09/24 Python
举例讲解Python中的Null模式与桥接模式编程
2016/02/02 Python
使用python实现ANN
2017/12/20 Python
Python 限制线程的最大数量的方法(Semaphore)
2019/02/22 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
2019/11/08 Python
pycharm激活码有效到2020年11月底
2020/09/18 Python
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
优秀少先队员主要事迹材料
2014/05/28 职场文书
小学生一分钟演讲稿
2014/08/26 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
工作保证书怎么写
2015/02/28 职场文书
canvas 中如何实现物体的框选
2022/08/05 Javascript