mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-17 14:57:23 +08:00
Merge pull request #992 from lucianobaraglia/master
GII sub-modules support [skip ci]
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -87,18 +87,17 @@ class Generator extends \yii\gii\Generator
|
||||
|
||||
$output = <<<EOD
|
||||
<p>The module has been generated successfully.</p>
|
||||
<p>To access the module, you need to modify the application configuration as follows:</p>
|
||||
<p>To access the module, you need to add this to your application configuration:</p>
|
||||
EOD;
|
||||
$code = <<<EOD
|
||||
<?php
|
||||
return array(
|
||||
'modules'=>array(
|
||||
......
|
||||
'modules' => array(
|
||||
'{$this->moduleID}' => array(
|
||||
'class' => '{$this->moduleClass}',
|
||||
),
|
||||
),
|
||||
......
|
||||
);
|
||||
......
|
||||
EOD;
|
||||
|
||||
return $output . '<pre>' . highlight_string($code, true) . '</pre>';
|
||||
|
||||
Reference in New Issue
Block a user