Создайте модуль 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
}
}