Yii 创建一个Craft 3模块,该模块仅在特定页面/特定事件后初始化

Yii 创建一个Craft 3模块,该模块仅在特定页面/特定事件后初始化,yii,craftcms,Yii,Craftcms,我创建了一个模块,在用户登录后执行操作: Event::on(User::className(), User::EVENT_AFTER_LOGIN, function ($event) { $this->moduleService->action(); }); 目前,我唯一能让它运行的方法是将模块添加到引导条目中。由于我只需要在一个点上运行该模块,因此在每个页面上加载该模块似乎效率低下 是否有办法使模块仅在某些页面上初始化(例如,仅登录页面

我创建了一个模块,在用户登录后执行操作:

    Event::on(User::className(), User::EVENT_AFTER_LOGIN, function ($event) {
        $this->moduleService->action();
         });
目前,我唯一能让它运行的方法是将模块添加到引导条目中。由于我只需要在一个点上运行该模块,因此在每个页面上加载该模块似乎效率低下


是否有办法使模块仅在某些页面上初始化(例如,仅登录页面)?

将模块添加到引导条目中是正确的。 在module 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
    }
}