Yii2: Как регистрировать контроллер и идентификатор действия для каждого запроса?

Я пытаюсь записать действия каждого контроллера с помощью того же кода:

public function afterAction($action, $result)
{
\Yii::$app->logger->write(0, $action->controller->id, $action->id);
return parent::afterAction($action, $result);
}

Но я не хочу повторно объявлять этот метод на каждом контроллере, и я не хочу использовать некоторый BaseController с тем же методом.
Я знаю, база / Контроллер имеет Событие AfterAction, но как регистрировать действия контроллера, используя его обработчик событий?

2

Решение

Вы можете создать Обработчик событий на уровне класса в boostrap такой процесс (скорее всего, в файле конфигурации web.php, который содержит конфигурация для приложения объект):

use yii\base\ActionEvent;
use yii\base\Controller;
use yii\base\Event;

$config = [
...
'bootstrap'    => [
...
function () {
Event::on(Controller::className(), Controller::EVENT_AFTER_ACTION, function (ActionEvent $event) {
Yii::info('Called controller/action: ' . $event->action->id . '/' . $event->action->controller->id);
});
},
...
],
...
];
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector