在Yii2高级模板中获取模块结构

时间:2015-09-25 08:26:10

标签: module yii2 yii2-advanced-app

为了创建一个表来支持权限我需要知道我的应用程序的模块(以及每个的控制器和动作),当然我可以使用

    Yii::$app->modules

但是它只返回已加载的模块,我想在backend中创建权限表,这样我就可以收到公共和backend模块(并且可以)但不是frontend个模块(这就是问题所在。)

其他方法应该是ModuleName::getInstance();,但我之前需要ID,我想要的是扫描所有现有模块,backendfrontend

欢迎任何方法或建议。感谢。

1 个答案:

答案 0 :(得分:1)

如果您的应用程序可以访问所有文件,您可以轻松地从其他应用程序的配置中获取模块列表。

我假设你正在使用“高级”应用程序模板。

$config = yii\helpers\ArrayHelper::merge(
    require(__DIR__ . '/../../../common/config/main.php'),
    require(__DIR__ . '/../../../common/config/main-local.php'),
    require(__DIR__ . '/../../../frontend/config/main.php'),
    require(__DIR__ . '/../../../frontend/config/main-local.php'),
    require(__DIR__ . '/../../../backend/config/main.php'),
    require(__DIR__ . '/../../../backend/config/main-local.php')
);

$modules = array_keys($config['modules']);

路径可能需要一些修正。此外,您可以注册指向根目录的别名并使用它。

/web/index.php中使用相同的方法来实例化当前应用程序。