mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-18 23:43:19 +08:00
Module::getModule and Module::hasModule support for sub-modules - see #983
This commit is contained in:
@@ -333,7 +333,20 @@ abstract class Module extends Component
|
|||||||
*/
|
*/
|
||||||
public function hasModule($id)
|
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)
|
public function getModule($id, $load = true)
|
||||||
{
|
{
|
||||||
if (isset($this->_modules[$id])) {
|
if (strpos($id, '/') === false) {
|
||||||
if ($this->_modules[$id] instanceof Module) {
|
if (isset($this->_modules[$id])) {
|
||||||
return $this->_modules[$id];
|
if ($this->_modules[$id] instanceof Module) {
|
||||||
} elseif ($load) {
|
return $this->_modules[$id];
|
||||||
Yii::trace("Loading module: $id", __METHOD__);
|
} elseif ($load) {
|
||||||
return $this->_modules[$id] = Yii::createObject($this->_modules[$id], $id, $this);
|
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;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user