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的FTP学习(二)[转自奥索]
Oct 09 PHP
PHP 程序员的调试技术小结
Nov 15 PHP
PHP魔术方法__GET、__SET使用实例
Nov 25 PHP
帝国cms常用标签汇总
Jul 06 PHP
PHP数组游标实现对数组的各种操作详解
Jan 26 PHP
实例讲解php数据访问
May 09 PHP
利用php_imagick实现复古效果的方法
Oct 18 PHP
Zend Framework过滤器Zend_Filter用法详解
Dec 09 PHP
PHP实现对xml的增删改查操作案例分析
May 19 PHP
PHP实现简单的模板引擎功能示例
Sep 02 PHP
PHP实现APP微信支付的实例讲解
Feb 10 PHP
PHP文件打开关闭及读写操作示例解析
Aug 06 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中使用TCPDF生成PDF文档实例
2014/07/01 PHP
php判断表是否存在的方法
2015/06/18 PHP
php指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
php基于session锁防止阻塞请求的方法分析
2017/08/07 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
js限制文本框为整数和货币的函数代码
2010/10/13 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
js完美解决IE6不支持position:fixed的bug
2015/04/24 Javascript
jQuery实现带有洗牌效果的动画分页实例
2015/08/31 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
2016/05/10 Javascript
javascript关于继承解析
2016/05/10 Javascript
早该知道的7个JavaScript技巧
2016/06/21 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
Nuxt.js 静态资源和打包的操作
2020/11/06 Javascript
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
Python爬虫DNS解析缓存方法实例分析
2017/06/02 Python
python3.4控制用户输入与输出的方法
2018/10/17 Python
Python中安装easy_install的方法
2018/11/18 Python
python版大富翁源代码分享
2018/11/19 Python
css3简单练习实现遨游浏览器logo的绘制
2013/01/30 HTML / CSS
加拿大便宜的隐形眼镜商店:Clearly
2016/09/15 全球购物
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
英国领先的互联网葡萄酒礼品商:Vintage Wine & Port
2019/05/24 全球购物
英国设计师泳装、沙滩装和比基尼在线精品店:Beach Cafe
2019/08/28 全球购物
致400米运动员广播稿
2014/02/07 职场文书
党的生日活动方案
2014/08/15 职场文书
活动总结范文
2014/08/30 职场文书
群众路线班子对照检查材料
2014/09/25 职场文书
学校党委干部个人对照检查材料思想汇报
2014/10/09 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书
使用HTML+Css+transform实现3D导航栏的示例代码
2021/03/31 HTML / CSS
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android
Python基本知识点总结
2022/04/07 Python