Создайте модуль Craft 3, который инициализируется только на определенных страницах / после определенных событий

Я создал модуль, который выполняет действие после того, как пользователь входит в систему:

    Event::on(User::className(), User::EVENT_AFTER_LOGIN, function ($event) {
        $this->moduleService->action();
         });

На данный момент единственный способ запустить это - добавить модуль в запись начальной загрузки. Поскольку мне нужно, чтобы модуль работал только в одной точке, загрузка его на каждой странице кажется неэффективной.

Можно ли инициализировать модуль только на определенных страницах (например, только на странице входа в систему)?

1 ответ

Вы правильно добавили модуль в запись начальной загрузки. В вашем модуле init функция проверьте запрос на инициализацию на нужных страницах, например:

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

    $request = Craft::$app->getRequest();
    if ($request->isCpRequest()) {
        // only for control panel requests
    } else if ($request->getIsSiteRequest()) {
        // the front end site was requested
    }
}
Другие вопросы по тегам