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. centos6.5升级python3.6并安装boto3模块

    1.先升级openssl yum安装各种依赖,yum install gcc gcc-c++ autoconf automake zlib zlib-devel pcre-devel tar zxvf ...

  2. SAP管理员SAP*和DDIC被锁定后如何解锁或重置密码

    SAP*初始化密码是06071992或passDDIC默认密码为19920706 环境信息:win server2003,SQL Server2008 R2 账号信息存在于数据库usr02表中,1.删 ...

  3. Div的几种选择器

    Div 是一个html标签,一个块级元素(单独显示一行),单独使用没有意义,需要结合CSS来使用,主要用于页面的布局. div选择器: 1.元素选择器: 1 <style> 2 div{ ...

  4. uniapp 跳转链接

    安装 uni-link 超链接 组件在异步里需要 跳转页面 或者 app里打开浏览器,不能自动跳转, 如充值:增加一个弹窗,获取到地址之后,手动点击link,打开app <uni-link :h ...

  5. css 多行隐藏

    overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box- ...

  6. Win10微软官方镜像iso文件下载

    1.转到下载页面2.按F12后点击小窗口左上角的手机图标3:刷新页面开始下载(win10.iso:链接)

  7. C# goto 语法

    test: Console.WriteLine("yest"); goto test;

  8. Lecture 1. Introduction and Basics - Carnegie Mellon - Computer Architecture 2015 - Onur Mutlu

    1.Hamming Distance: 两个相同长度比特串对应位置的不同位的数量,一般使用 d(x,y) 来表示汉明距离.对两个比特串进行异或运算,统计结果为1的个数就是汉明距离.   ======= ...

  9. css制作仿商城侧边导航

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  10. hive支持的压缩算法

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