Yii 2.0.14 版本后通过 echo 返回值导致 yii\web\HeadersAlreadySentException 抛出异常

最近新项目使用了最新的 Yii 框架,版本为 2.0.15.1,由于封装返回 JSON 数据的模块直接搬用了之前老版本 Yii 的项目中的模块,导致了返回数据携带 yii\web\HeadersAlreadySentException 异常使得前端无法对返回数据正常解析的问题,问题代码如下:

protected function renderJson($data = [], $msg = "ok", $code=200) {
        header("Content-type: application/json");
        echo json_encode([
            "code" => $code,
            "msg" => $msg,
            "data" => $data,
            "req_id" => uniqid()
        ]);
        return \Yii::$app->end();
}

我使用了 echo 对封装数据进行返回操作,这里应该改为:

protected function renderJSON($data=[], $msg ="ok", $code = 200) {
	header('Content-type: application/json');
	$jsonResult = json_encode([
	    "code" => $code,
	    "msg" => $msg,
	    "data" => $data,
	    "req_id" => uniqid()
	]);
	return $jsonResult;
}

这里只要通过变量返回封装好的数据就可以了。


参考资源:

https://stackoverflow.com/questions/49689315/an-error-occurred-while-handling-another-error-yii-web-headersalreadysentexcept

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值