diff --git a/framework/yii/base/Module.php b/framework/yii/base/Module.php
index 7df87a5..a85e249 100644
--- a/framework/yii/base/Module.php
+++ b/framework/yii/base/Module.php
@@ -333,7 +333,20 @@ abstract class Module extends Component
*/
public function hasModule($id)
{
- return isset($this->_modules[$id]);
+ if (strpos($id, '/') === false) {
+ return isset($this->_modules[$id]);
+ } else {
+ // it's a sub-module
+ $ids = explode('/', $id);
+ $module = $this;
+ foreach ($ids as $id) {
+ if (!isset($module->_modules[$id])) {
+ return false;
+ }
+ $module = $module->getModule($id);
+ }
+ return true;
+ }
}
/**
@@ -345,13 +358,23 @@ abstract class Module extends Component
*/
public function getModule($id, $load = true)
{
- if (isset($this->_modules[$id])) {
- if ($this->_modules[$id] instanceof Module) {
- return $this->_modules[$id];
- } elseif ($load) {
- Yii::trace("Loading module: $id", __METHOD__);
- return $this->_modules[$id] = Yii::createObject($this->_modules[$id], $id, $this);
+ if (strpos($id, '/') === false) {
+ if (isset($this->_modules[$id])) {
+ if ($this->_modules[$id] instanceof Module) {
+ return $this->_modules[$id];
+ } elseif ($load) {
+ Yii::trace("Loading module: $id", __METHOD__);
+ return $this->_modules[$id] = Yii::createObject($this->_modules[$id], $id, $this);
+ }
+ }
+ } else {
+ // it's a sub-module
+ $ids = explode('/', $id);
+ $module = $this;
+ foreach ($ids as $id) {
+ $module = $module->getModule($id);
}
+ return $module;
}
return null;
}
diff --git a/framework/yii/gii/generators/controller/Generator.php b/framework/yii/gii/generators/controller/Generator.php
index 9de9c17..b7c4095 100644
--- a/framework/yii/gii/generators/controller/Generator.php
+++ b/framework/yii/gii/generators/controller/Generator.php
@@ -197,7 +197,7 @@ class Generator extends \yii\gii\Generator
*/
public function getModule()
{
- if (($pos = strpos($this->controller, '/')) !== false) {
+ if (($pos = strrpos($this->controller, '/')) !== false) {
$id = substr($this->controller, 0, $pos);
if (($module = Yii::$app->getModule($id)) !== null) {
return $module;
diff --git a/framework/yii/gii/generators/module/Generator.php b/framework/yii/gii/generators/module/Generator.php
index 1b35db8..39c68f0 100644
--- a/framework/yii/gii/generators/module/Generator.php
+++ b/framework/yii/gii/generators/module/Generator.php
@@ -87,18 +87,17 @@ class Generator extends \yii\gii\Generator
$output = <<
To access the module, you need to modify the application configuration as follows:
+To access the module, you need to add this to your application configuration:
EOD; $code = <<' . highlight_string($code, true) . '';