Laravel自定义错误消息

在Laravel验证请求时出现错误,默认会返回如下的错误:

可以看到JSO结构中的message为The given data was invalid.而并非是我们具体自定义的错误,这在用户端显得非常不友好。

在谷歌找了半天都是教你如何通过语言包的形式修改为本地化的语言,实质上和我们的需求有些出入,并不能获取的具体的错误内容。

最终,在laravel的issue中找到一则帖子:https://github.com/laravel/framework/issues/21059

其实我很同意这个帖子主题,和我遇到的情况一致,但被关闭了。

文中有一些其他人给出的解决思路,如下:

修改文件:app/Exceptions/Handler.php

    /**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $exception
* @return \Symfony\Component\HttpFoundation\Response
*
* @throws \Exception
*/
public function render($request, Exception $exception)
{
if ($exception instanceof ValidationException && $request->expectsJson())
return response()->json(['message' => $exception->validator->errors()->first(), 'errors' => $exception->validator->getMessageBag()], 422);
return parent::render($request, $exception);
}

通过修改render方法得以实现对请求异常时返回的json内容。

如果想更改为其他的json结构,也可以在此进行修改。

其实如果只是想更改JSON结构可以通过重写invalidJson实现,依然在这个文件里:

    /**
* Convert a validation exception into a JSON response.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Validation\ValidationException $exception
* @return \Illuminate\Http\JsonResponse
*/
protected function invalidJson($request, ValidationException $exception)
{
return response(eeData($exception->getMessage(), $exception->status));
}

其中的eeData为我自己自定义的JSON结构函数。

Laravel自定义JSON错误消息 The given data was invalid.的更多相关文章

  1. laravel自定义返回错误方法

    返回视图传递错误信息 function withInfoErr($msg){ return back()->with('error',$msg); } 返回视图提示消息 function wit ...

  2. Laravel 5.5 FormRequest 自定义错误消息 postman调试时X-Requested-With设为XMLHttpRequest

    Laravel 5.5 FormRequest 自定义错误消息 使用FormRequest进行表单验证,就不用让验证逻辑和控制器里面的逻辑都混在一起.但在使用的时候呢,发现json错误返回的数据,与我 ...

  3. laravel的Validation检索验证错误消息

    基本用法 处理错误消息 错误消息和视图 可用的验证规则 有条件地添加规则 自定义错误消息 自定义验证规则 基本用法 Laravel提供了一个简单.方便的工具,用于验证数据并通过validation类检 ...

  4. Kettle解析JSON错误,We MUST have the same number of values for all paths,We can not find and data with path [$.

    最近公司要从聚石塔上抽取数据,其中有JSON格式数据,所以学习一下Kettle解析JSON,碰到小小问题,记录一下: (1) 2015/07/15 15:22:48 - trade_detail.0 ...

  5. laravel 自定义验证 Validator::extend

    laravel 自定义验证 $messages = [ 'name.integer' => '名字不能为整型', 'name.max' => '长度不能超过5', ]; public st ...

  6. laravel中的错误与日志

    日志 laravel中的日志是基于monolog而封装的.laravel在它上面做了几个事情: 把monolog中的addInfo等函数简化成为了info这样的函数 增加了useFiles和useDa ...

  7. 编译器错误消息: CS0016: 未能写入输出文件

    “/”应用程序中的服务器错误. 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误消息: CS0016: 未能写入输出文件“c ...

  8. Asp.Net Core 轻松学-实现跨平台的自定义Json数据包

    前言     在前后端分离的业务开发中,我们总是需要返回各种各样的数据包格式,一个良好的 json 格式数据包是我们一贯奉行的原则,下面就利用 Json.Net 来做一个简单具有跨平台的序列化数据包实 ...

  9. 转: Laravel 自定义公共函数的引入

    来源:Laravel 自定义公共函数的引入 背景习惯了 使用 ThinkPHP 框架,有一个公共方法类在代码编写上会快捷很多,所以有必要在此进行配置一番.测试框架:Laravel 5.5步骤指导1. ...

  10. flask 在模板中渲染错误消息

    在模板中渲染错误消息 如果form.valicate_on_submit()返回False,说明验证没有通过,对于没有验证通过的字段,WTForms会把错误信息添加到表单类的errors属性中,这是一 ...

随机推荐

  1. Cloud9 3.0 SDK安装

    Cloud9 IDE是一个基于Node.JS构建的JavaScript程序开发Web IDE.它拥有一个非常快的文本编辑器支持为JS, HTML, CSS和这几种的混合代码进行着色显示.Cloud9 ...

  2. 微信小程序学习记录

    尺寸单位 rpx 常常以iphone6为开发基准,  1px = 2rpx,不同设备的比例是不同的: 小程序生命周期 和vue的生命周期很相似,不过小程序的生命周期和页面.组件的生命周期又又一点不一样 ...

  3. Centos 7.5 MySql的安装和配置

    一.安装 三个步骤: wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpmyum -y ins ...

  4. 第四章:基本Git概念(重点)

    本章通过讨论Git的基本架构组成和一些重要概念,来探讨Git的不同之处和原因. 一: 基本概念 1.版本库. 1]Git版本库只是一个简单的数据库,包含所有用来维护与管理项目的修订版本和历史记录. 2 ...

  5. hive支持的压缩算法

    压缩格式的设置 set mapred.output.compression= 压缩格式 工具 算法 扩展名 是否支持分割 Hadoop编码/解码器 default deflate .deflate N ...

  6. Software--电商平台系统--P3 Product Catalogy 商品目录模块

    2018-01-15  15:25:20 商品目录 服务层 控制器层 ProductCate 服务层 Controller 控制器层

  7. 052_Lightning

    不支持内容: JavaScript buttons, customizable forecasting, and customizable tabs. 设置部分User选择使用Lightning: 单 ...

  8. eclipse 提示错误The method of type must override a superclass method 的解决办法

    java1.5中继承接口是不需要@Override的,而在1.6以上版本中是需要添加@Override注解的,如果项目的编译器是1.5版本的就可能报错The method *** of type mu ...

  9. Django中models下常用Field以及字段参数

    常见的FieldType数据库字段类型     1.AutoField:自增Field域,自动增加的一个数据库字段类型,例如id字段就可以使用该数据类型,参数中必须填入primary_key=True ...

  10. python import导入失败 相对路径 绝对路径

    首先我们有这样一个目录结构 经过我无数次的调试,我发现从test3调用spider以及downloadss文件可以直接import调用 但是从外部的app.py文件调用,spider.py文件死活调用 ...