1

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

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

目前,我可以让它运行的唯一方法是将模块添加到引导条目。由于我只需要在某一时刻运行该模块,因此在每一页上加载它似乎效率低下。

有没有办法让模块只在某些页面上初始化(例如只在登录页面)?

4

1 回答 1

1

您将模块添加到引导条目是正确的。在您的模块初始化函数中,检查所需页面上的初始化请求,例如:

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
    }
}
于 2018-08-14T14:02:10.230 回答