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 相关文章推荐
解决中英文字符串长度问题函数
Jan 16 PHP
php iconv() : Detected an illegal character in input string
Dec 05 PHP
file_get_contents(&quot;php://input&quot;, &quot;r&quot;)实例介绍
Jul 01 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
Aug 22 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
Oct 30 PHP
PHP四舍五入、取整、round函数使用示例
Feb 06 PHP
Laravel 5框架学习之Eloquent 关系
Apr 09 PHP
PHP实现XML与数据格式进行转换类实例
Jul 29 PHP
PHP 中提示undefined index如何解决(多种方法)
Mar 16 PHP
ThinkPHP中where()使用方法详解
Apr 19 PHP
yii2多图上传组件的使用教程
May 10 PHP
PHP实现对数字分隔加千分号的方法
Mar 18 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
Zend Studio 无法启动的问题解决方法
2008/12/04 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
2014/07/02 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
2019/07/22 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
Javascript客户端脚本的设计和应用
2006/08/21 Javascript
Prototype使用指南之hash.js
2007/01/10 Javascript
利用js对象弹出一个层
2008/03/26 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
jquery 实现密码框的显示与隐藏示例代码
2013/09/18 Javascript
js跨浏览器实现将字符串转化为xml对象的方法
2013/09/25 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
javascript中href和replace的比较(详解)
2016/11/25 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
nginx部署访问vue-cli搭建的项目的方法
2018/02/12 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
python pandas 组内排序、单组排序、标号的实例
2018/04/12 Python
python 利用for循环 保存多个图像或者文件的实例
2018/11/09 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
2019/07/18 Python
Python中zip函数如何使用
2020/06/04 Python
基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码
2021/02/18 Python
会计职业生涯规划书
2014/01/13 职场文书
《灰椋鸟》教学反思
2014/04/27 职场文书
品质口号大全
2014/06/17 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
民事代理词范文
2015/05/25 职场文书
详解MindSpore自定义模型损失函数
2021/06/30 Python
Python 一键获取电脑浏览器的账号密码
2022/05/11 Python