Yii2: $loadedModules 不显示所有模块
Yii2: $loadedModules does not show all modules
已创建模块 "forum" - 与写的完全一致 here。然后创建嵌套模块 "admin":
//"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',
],
];
}
}
同样创建了一个非嵌套模块"games"(方法相同)写在"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"
}
"Games" 和嵌套的 "admin" 模块不存在!虽然 doc 说:
$loadedModules property keeps a list of loaded modules, including both direct children and nested ones, indexed by their class names.
但我只能得到"forum"自己创建的模块。我哪里理解错了?
如文档所述:
$loadedModules property keeps a list of loaded modules
这意味着它保留在当前请求中加载的模块。例如。如果你在模块的页面 example.com/forum/
它将包含 app\modules\forum\Module
但如果你在 example.com/site
其中 site 是控制器的名称 $loadedModules
将包含仅在 $bootstrap
config 属性.
中设置的模块
要获取所有模块的列表,请调用 Yii::$app->modules
。请注意,$loadedModules
包含应用程序本身,因为它扩展了 Module
class。 Yii::$app->modules
包含来自应用配置 modules
属性.
的所有模块
已创建模块 "forum" - 与写的完全一致 here。然后创建嵌套模块 "admin":
//"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',
],
];
}
}
同样创建了一个非嵌套模块"games"(方法相同)写在"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"
}
"Games" 和嵌套的 "admin" 模块不存在!虽然 doc 说:
$loadedModules property keeps a list of loaded modules, including both direct children and nested ones, indexed by their class names.
但我只能得到"forum"自己创建的模块。我哪里理解错了?
如文档所述:
$loadedModules property keeps a list of loaded modules
这意味着它保留在当前请求中加载的模块。例如。如果你在模块的页面 example.com/forum/
它将包含 app\modules\forum\Module
但如果你在 example.com/site
其中 site 是控制器的名称 $loadedModules
将包含仅在 $bootstrap
config 属性.
要获取所有模块的列表,请调用 Yii::$app->modules
。请注意,$loadedModules
包含应用程序本身,因为它扩展了 Module
class。 Yii::$app->modules
包含来自应用配置 modules
属性.