thinkphp 抛出异常后不返回错误页面 改成返回json字段

在ThinkPHP框架中,避免抛出异常后显示错误页面,可以通过配置`exception_tmpl`实现。只需在config中定义一个自定义的404.html或404.tpl模板,这样当异常发生时,系统将返回定义的JSON内容。

虽然不建议该tp底层代码,但我没有找到其他方法,如果有其他解答这问题的方法,麻烦留言

thinkphp5 开启debug后,当报错后会出现较详细的内容
如果关闭debug 则出现 页面错误,请稍后再试

现在要跟前端合作,然后要保证不管访问什么连接都要返回一个json自读不能返回错误页面

然后你就找而配置文件呀 好不容易看error_message 把它改成了{"status":500 , "description" : "服务器错误!"} 结果吧显示出来的呢是json格式了 结果却还是错误页面,只不过内容是这个

然后你把thinkphp5框架整个翻了一遍 你会发现框架出现错误后会加载thinkphp下面的tpl中的...tpl文件  

上面都是废话,解决方法如下:
找到项目目录下的\thinkphp\library\think\exception中的Handle.php
然后找到convertExceptionToResponse方法
你会发现 $response = new Response($content, 'html');
因为你要放回json格式的数据
改成如下内容
$content = json_encode(['status' => 500]);
$response = new Response($content, 'json');
注意要屏蔽
 //include Config::get('exception_tmpl');
然后框架错误,就会出现你刚定义的内容了

以下为新的解决方案
其实不用改底层文件 因为在 config中有个 exception_tmpl ,只要改这个文件就可以,如定义一个404.html的html页面 或者定义一个404.tpl

 'exception_tmpl'         => APP_PATH.'404.tpl',

在application中创建一个404.html的文件

html中写如下内容
{"status":500,"description":"服务器错误"}
返回的就是json字段了
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值