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 服务器配置(使用Apache及IIS两种方法)
Jun 01 PHP
php cookie的操作实现代码(登录)
Dec 29 PHP
PHP简洁函数小结
Aug 12 PHP
php fsockopen中多线程问题的解决办法[翻译]
Nov 09 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
Jan 16 PHP
php获取本地图片文件并生成xml文件输出具体思路
Apr 27 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
Jun 18 PHP
php对包含html标签的字符串进行截取的函数分享
Jun 19 PHP
CentOS6.5 编译安装lnmp环境
Dec 21 PHP
PHP封装的字符串加密解密函数
Dec 18 PHP
PHP微信开发之文本自动回复
Jun 23 PHP
magento后台无法登录解决办法的两种方法
Dec 09 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
信用卡效验程序
2006/10/09 PHP
深入apache配置文件httpd.conf的部分参数说明
2013/06/28 PHP
详解WordPress中分类函数wp_list_categories的使用
2016/01/04 PHP
php简单实现批量上传图片的方法
2016/05/09 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
javascript 鼠标拖动图标技术
2010/02/07 Javascript
JS实现标签页效果(配合css)
2013/04/03 Javascript
一个JavaScript变量声明的知识点
2013/10/28 Javascript
Javascript数组操作函数总结
2015/02/05 Javascript
javascript每日必学之循环
2016/02/19 Javascript
js事件处理程序跨浏览器解决方案
2016/03/27 Javascript
谈一谈jQuery核心架构设计
2016/03/28 Javascript
利用JQuery阻止事件冒泡
2016/12/01 Javascript
10个在JavaScript开发中常遇到的BUG
2017/12/18 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
vue ssr 指南详读
2018/06/29 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
vue 移动端适配方案详解
2018/11/15 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
详解Node.js amqplib 连接 Rabbit MQ最佳实践
2019/01/24 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
对pandas中apply函数的用法详解
2018/04/10 Python
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
高级护理专业毕业生推荐信
2013/12/25 职场文书
如何写好优秀的创业计划书
2014/01/30 职场文书
老师的检讨书
2014/02/23 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
世界气象日活动总结
2015/02/27 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
2015新教师教学工作总结
2015/07/22 职场文书
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python