YII修改Exception返回值为任意格式

YII提供的可更改异常返回的格式很有限而且很不灵活,在这里我们需要修改框架的代码来实现。

既然是异常,那么我们就要修改响应的文件:/home/gcheng/workShop/basic/vendor/yiisoft/yii2/web/ErrorHandler

我们的目标是把异常格式改为如下格式:

{
    "Exception": [
        {
            "code": -3,
            "name": "decryption error"
        }
    ]
}

 那么相对与原有的格式我们要去掉默认的code,name和type

        
   //使用如下格式抛出异常,抛出的异常继承自UserException(YII用来抛出用户定制的异常)
throw new UserException(Yii::$app->ZYKException->errorMessage(-6));

//在此处array中为字符串: {"Exception":[{"code":-3,"name":"decryption error"}]},传递字符串而不是直接传递数组的原因是,异常的message必须是字符串类型
if($exception instanceof UserException) { $array = json_decode($exception->getMessage(), true); } else { $array = [ 'name' => ($exception instanceof Exception || $exception instanceof ErrorException) ? $exception->getName() : 'Exception', 'message' => $exception->getMessage(), 'code' => $exception->getCode(), ]; }

 以上的解决方法的确是可以解决任意修改异常格式的功能,但是有一个缺点是无法人为设置HTTP STATUS CODE因为USER EXCEPTION是HTTP EXCEPTION的父类,无法更改子类中的status code。

 如果想同时任意更改返回异常的status code那么就要写一个新的异常类,继承自HTTP EXCEPTION并且在继承类中修改status code

转载于:https://www.cnblogs.com/wlemory/p/4757931.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值