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