在AfterAction中记录数据库的异常? Yii2框架

时间:2017-09-21 16:25:38

标签: rest yii2 yii2-basic-app

我有一个扩展yii \ rest \ ActiveController的控制器。我已经覆盖了beforeAction()方法,将部分请求记录到数据库中(我将此id存储在控制器的私有变量中)。然后在afterAction()方法中 - 我用响应代码+结果更新相应的日志ID。

如果我有2xx错误,这一切都可以正常工作,但是一旦我进入400s,500s,这已被抛出,这不起作用我会假设因为afterAction永远不会发生。

我是否可以覆盖特定的函数来捕获控制器级别的异常并记录错误?

1 个答案:

答案 0 :(得分:1)

解决方案是将以下方法添加到我的Controller:

 use yii\web\Response;
 use yii\web\ResponseEvent;

并处理beforeSend事件

  public function init(){
                    parent::init();

                    //before we send the client the response, do work
                    Yii::$app->response->on(Response::EVENT_BEFORE_SEND,function($event){
                    $response = $event->sender;
                    //$response will have $response->statusCode etc so you can log the result here

                    });
                }