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 相关文章推荐
一个很方便的 XML 类!!原创的噢
Oct 09 PHP
通过html表格发电子邮件
Oct 09 PHP
PHP4实际应用经验篇(8)
Oct 09 PHP
PHP性能优化准备篇图解PEAR安装
Dec 05 PHP
非常精妙的PHP递归调用与静态变量使用
Dec 16 PHP
Windows7下的php环境配置教程
Feb 28 PHP
php数组合并与拆分实例分析
Jun 12 PHP
php算法实例分享
Jul 14 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
Aug 18 PHP
PHP抽奖算法程序代码分享
Oct 08 PHP
php array_values 返回数组的所有值详解及实例
Nov 12 PHP
Ubuntu上安装yaf扩展的方法
Jan 29 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 版本]
2007/03/20 PHP
php邮件发送,php发送邮件的类
2011/03/24 PHP
php多用户读写文件冲突的解决办法
2013/11/06 PHP
php对二维数组进行排序的简单实例
2013/12/19 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
jQuery动画效果-fadeIn fadeOut淡入浅出示例代码
2013/08/28 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
详解JavaScript中的客户端消息框架设计原理
2015/06/24 Javascript
javascript实现dom元素可拖动
2016/03/21 Javascript
C#实现将一个字符转换为整数
2017/12/12 Javascript
vue删除html内容的标签样式实例
2018/09/13 Javascript
vue中选中多个选项并且改变选中的样式的实例代码
2020/09/16 Javascript
Python中的多重装饰器
2015/04/11 Python
Python入门教程之运算符与控制流
2016/08/17 Python
python字符串的方法与操作大全
2018/01/30 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
python实现五子棋游戏
2019/06/18 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
Ubuntu中配置TensorFlow使用环境的方法
2020/04/21 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
Python语言编写智力问答小游戏功能
2020/10/13 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
英国香水店:The Perfume Shop
2017/03/27 全球购物
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
求职信格式范本
2013/11/15 职场文书
民政局个人整改措施
2014/09/24 职场文书
民事代理词范文
2015/05/25 职场文书
初中体育教学随笔
2015/08/15 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
Nginx中break与last的区别详析
2021/03/31 Servers
一篇文章弄懂Python关键字、标识符和变量
2021/07/15 Python
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL
windows server2008 开启端口的实现方法
2022/06/25 Servers