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
}
}