Php Yii:初始化模块,当它';它不在配置中

Php Yii:初始化模块,当它';它不在配置中,php,yii,Php,Yii,我的Yii项目中有一些模块,我只想在当前用户有权使用该模块的情况下初始化它们 以下是我所做的:在SiteController中,我获取具有用户模块关系的db表,并获取模块名称数组。然后,我想在配置中没有定义模块时加载每个可用模块。我找不到任何运算符或方法来执行此操作。有没有一种方法可以实现这一点而无需进行变通 我考虑的另一件事是在每个模块的beforeControllerAction中取消模块初始化,但我也无法解决这个问题。您最好使用beforeControllerAction检查访问权限,如下

我的Yii项目中有一些模块,我只想在当前用户有权使用该模块的情况下初始化它们

以下是我所做的:在SiteController中,我获取具有用户模块关系的db表,并获取模块名称数组。然后,我想在配置中没有定义模块时加载每个可用模块。我找不到任何运算符或方法来执行此操作。有没有一种方法可以实现这一点而无需进行变通


我考虑的另一件事是在每个模块的beforeControllerAction中取消模块初始化,但我也无法解决这个问题。

您最好使用
beforeControllerAction
检查访问权限,如下所示:

public function beforeControllerAction($controller, $action)
{
   if(parent::beforeControllerAction($controller, $action))
   {
      // this method is called before any module controller action is performed
      // you may place customized code here              
      if(!Yii::app()->user->checkAccess('getMyModule')){
          throw new CHttpException(403, Yii::t('yii','You do not have sufficient permissions to access.'));
      }             
      return true;
   }
   else
      return false;
}

感谢如果我有少量的模块,这是一个很好的解决方案。但是,如果我有100多个模块(现在不是:-),我宁愿只加载允许的5-15个模块。问题是,我可以只定义所需的模块,还是必须对所有模块都进行定义?@切换器模块不会一次全部加载。Yii使用延迟加载,模块文件将仅在请求后加载。哦,好的。我以前从未尝试过使用它们。谢谢你的帮助!