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

Get modules structure in Yii2 Advanced Template

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

    Yii::$app->modules

但是它 returns 只加载了模块,我想在 backend 中设置我的权限 table 所以我收到了公共模块和 backend 模块(而且它是好的)但不是 frontend 个(这就是问题所在)。

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

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

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

我假设您使用的是 "advanced" 应用程序模板。

$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 中使用了相同的方法来实例化当前应用程序。