Yii2: $loadedModules не показывает все модули

Созданный модуль «Форум» — именно так, как написано Вот. Затем создал вложенный модуль «Админы»:

//"Module.php" in '@app/modules/forum'
namespace app\modules\forum;

class Module extends \yii\base\Module {
public function init() {
parent::init();
\Yii::configure($this, require(__DIR__ . '/config.php'));

$this->modules = [
'admin' => [
// here is my nested module
'class' => 'app\modules\forum\modules\admin\Module',
],
];
}
}

Также создан не вложенный модуль «игры» (так же) и написал в «Web.php» (основной конфигурационный файл):

'modules' => [
'forum' => [
'class' => 'app\modules\forum\Module',
],
'games' => [
'class' => 'app\modules\games\Module',
],
'admin' => [
'class' => 'app\modules\forum\modules\admin\Module',
],
],

Но когда я попытался вывести:

// codeline is written in application view, not in module view
var_dump(array_keys(\Yii::$app->loadedModules));

Я видел только эти модули:

array(4) {
string(19) "yii\web\Application"string(16) "yii\debug\Module"string(14) "yii\gii\Module"string(24) "app\modules\forum\Module"

}

«Игры» и вложенный «Админы» модули отсутствуют! Хотя доктор говорит:

свойство $loadedModules хранит список загруженных модулей, включая прямых и вложенных детей, индексируется по именам классов.

Но я мог получить только «Форум» сам созданный модуль. Что я не так понимаю?

2

Решение

Как сказано в документации:

Свойство $loadedModules хранит список загруженных модулей

Это означает, что он сохраняет модули, загруженные в текущий запрос. Например. если вы находитесь на странице модуля example.com/forum/ это будет содержать app\modules\forum\Module но если вы на example.com/site где сайт это имя контроллера $loadedModules будет содержать только модули, которые установлены в $bootstrap свойство config.

Чтобы получить список всех модулей, позвоните Yii::$app->modules, Обратите внимание, что $loadedModules содержит само приложение, так как оно расширяется Module учебный класс. Yii::$app->modules содержит все модули из конфигурации приложения modules имущество.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]