3

我想记录所有对站点、框架 Yii 的 HTTP 请求。

我可以使用框架的标准功能吗?

4

2 回答 2

3

我们已经使用onBeginRequestor完成了它onEndRequest。在此处查看更多信息:如何在 Yii 中使用事件

本质上,您将全局请求事件与您自己的类挂钩,然后做任何您想做的事情。

于 2013-01-04T20:57:37.580 回答
3

Yii2中,事件被调用beforeRequest并且afterRequest( http://www.yiiframework.com/doc-2.0/guide-structure-applications.html )

例如:

Yii::$app->on('afterRequest', function($event) {
    //do something...
    //response object is in $event->sender->response
    //response data is in $event->sender->response->data
    //request object is in $event->sender->request
});

但这是在响应数据准备好响应内容之前(根据响应格式,例如Response::FORMAT_JSON),所以如果你想要真正的最终响应正文,你需要这样做(http://www.yiiframework.com/doc-2.0/指南运行时响应.html#sending-response):

Yii::$app->response->on(\yii\web\Response::EVENT_AFTER_SEND, function($event) {  //alternatively use EVENT_AFTER_PREPARE
    //now you can access $event->sender->content and eg. $event->sender->getHeaders()
    //Also, you have access to the request through Yii::$app->request
});
于 2017-12-04T09:50:38.170 回答