Я пытаюсь создать регистратор запросов и ответов для веб-службы, созданной в Yii 2.0.5, для целей отладки.
В основном мой мотив — отслеживать все запросы, данные запросов, данные ответов, и для этой цели я использую Yii Events. До сих пор я закодировал что-то вроде этого:
Контроллер пользователя
use yii\rest\ActiveController;
use yii\base\Event;
use yii\web\Response;
Event::on(ActiveController::className(), ActiveController::EVENT_AFTER_ACTION, ['app\models\LogHandler', 'saveRequest'], ['request' => Yii::$app->request->getRawBody(), 'response' => Yii::$app->response->content]);
class UserController extends ActiveController
{
public $modelClass = 'app\models\User';
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['contentNegotiator']['formats']['text/html'] = Response::FORMAT_XML;
return $behaviors;
}
// POST demo
public function actionDemo()
{
$data = array('status' => 200, 'message' => 'Success');
return $data;
}
}
В приведенном выше коде, если вы заметили, я использовал обработчик событий уровня класса (doc). Здесь я пытаюсь зафиксировать событие Controllers
EVENT_AFTER_ACTION
и передать объект Request
и Response
методу static
моего LogHandler
. Однако в моем обработчике я могу получить необработанное тело запроса, но не могу получить данные ответа, которые возвращает actionDemo()
.
Обработчик логов
namespace app\models;
use yii\db\ActiveRecord;
class LogHandler extends ActiveRecord
{
public static function tableName()
{
return 'request_log';
}
public static function saveRequest($event)
{
// self::load($event);
// self::save();
var_dump($event);
}
}
Как мне получить данные ответа...