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 相关文章推荐
改进的IP计数器
Oct 09 PHP
用PHP查询域名状态whois的类
Nov 25 PHP
PHP IPV6正则表达式验证代码
Feb 16 PHP
在php和MySql中计算时间差的方法
Apr 22 PHP
php curl常见错误:SSL错误、bool(false)
Dec 28 PHP
成为好程序员必须避免的5个坏习惯
Jul 04 PHP
Yii使用find findAll查找出指定字段的实现方法
Sep 05 PHP
php实现数组中索引关联数据转换成json对象的方法
Jul 08 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
利用php + Laravel如何实现部署自动化详解
Oct 11 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 PHP
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
Apr 16 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
WML,Apache,和 PHP 的介绍
2006/10/09 PHP
php学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
destoon整合UCenter图文教程
2014/06/21 PHP
php ci框架中加载css和js文件失败的原因及解决方法
2014/07/29 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
PHP依赖注入原理与用法分析
2018/08/21 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
基于jquery的气泡提示效果
2010/05/31 Javascript
javascript跨域刷新实现代码
2011/01/01 Javascript
JS动态获取当前时间,并写到特定的区域
2013/05/03 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
2015/02/15 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
基于jQuery实现中英文切换导航条效果
2016/09/18 Javascript
简单的js计算器实现
2016/10/26 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
如何解决webpack-dev-server代理常切换问题
2019/01/09 Javascript
使用PDB简单调试Python程序简明指南
2015/04/25 Python
Python实现身份证号码解析
2015/09/01 Python
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
Python空间数据处理之GDAL读写遥感图像
2019/08/01 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
2020/03/06 Python
python实现飞船大战
2020/04/24 Python
python小程序之4名牌手洗牌发牌问题解析
2020/05/15 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
ZINVO手表官网:男士和女士手表
2019/03/10 全球购物
Kipling意大利官网:世界著名的时尚休闲包袋品牌
2019/06/05 全球购物
岳父生日宴会答谢词
2014/01/13 职场文书
学生爱国演讲稿
2014/01/14 职场文书
我爱读书演讲稿
2014/05/07 职场文书
个人股份合作协议书
2014/10/24 职场文书
小学开学典礼新闻稿
2015/07/17 职场文书
体育教师研修感悟
2015/11/18 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书