Я пытаюсь записать действия каждого контроллера с помощью того же кода:
public function afterAction($action, $result)
{
\Yii::$app->logger->write(0, $action->controller->id, $action->id);
return parent::afterAction($action, $result);
}
Но я не хочу повторно объявлять этот метод на каждом контроллере, и я не хочу использовать некоторый BaseController с тем же методом.
Я знаю, база / Контроллер имеет Событие AfterAction, но как регистрировать действия контроллера, используя его обработчик событий?
Вы можете создать Обработчик событий на уровне класса в 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);
});
},
...
],
...
];
Других решений пока нет …