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 常用字符串函数总结
Mar 15 PHP
ThinkPHP之getField详解
Jun 20 PHP
php foreach正序倒序输出示例代码
Jul 01 PHP
PHP开启opcache提升代码性能
Apr 26 PHP
php计算title标题相似比的方法
Jul 29 PHP
如何正确配置Nginx + PHP
Jul 15 PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 PHP
Laravel手动返回错误码示例
Oct 22 PHP
phpQuery采集网页实现代码实例
Apr 02 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
Apr 27 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中执行系统外部命令
2006/10/09 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
YII Framework教程之异常处理详解
2016/03/14 PHP
用js生产批量批处理执行命令
2008/07/28 Javascript
JavaScript 轻松搞定快捷留言功能 只需一行代码
2010/04/01 Javascript
jQuery 1.5最新版本的改进细节分析
2011/01/19 Javascript
通过Jquery遍历Json的两种数据结构的实现代码
2011/01/19 Javascript
基于jquery的图片的切换(以数字的形式)
2011/02/14 Javascript
jquery动态加载图片数据练习代码
2011/08/04 Javascript
Javascript非构造函数的继承
2015/04/27 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
微信小程序学习(4)-系统配置app.json详解
2017/01/12 Javascript
安装Node.js并启动本地服务的操作教程
2018/05/12 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
[39:52]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第一场
2018/04/04 DOTA
python中matplotlib实现最小二乘法拟合的过程详解
2017/07/11 Python
django admin后台添加导出excel功能示例代码
2019/05/15 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
python3实现高效的端口扫描
2019/08/31 Python
python中return不返回值的问题解析
2020/07/22 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
自我鉴定思想方面
2013/10/07 职场文书
学校花圃的标语
2014/06/18 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
2014年话务员工作总结
2014/11/19 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书
催款函范本大全
2015/06/24 职场文书
2015年学校总务工作总结
2015/07/20 职场文书
导游词之安徽巢湖
2019/12/26 职场文书
如何在CocosCreator里画个炫酷的雷达图
2021/04/16 Javascript
如何使用PostgreSQL进行中文全文检索
2021/05/27 PostgreSQL
css3新特性的应用示例分析
2022/03/16 HTML / CSS
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS