Browse Source

Merge pull request #992 from lucianobaraglia/master

GII sub-modules support [skip ci]
tags/2.0.0-beta
Qiang Xue 11 years ago
parent
commit
71222c1f1f
  1. 23
      framework/yii/base/Module.php
  2. 2
      framework/yii/gii/generators/controller/Generator.php
  3. 5
      framework/yii/gii/generators/module/Generator.php

23
framework/yii/base/Module.php

@ -333,7 +333,20 @@ abstract class Module extends Component
*/
public function hasModule($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,6 +358,7 @@ abstract class Module extends Component
*/
public function getModule($id, $load = true)
{
if (strpos($id, '/') === false) {
if (isset($this->_modules[$id])) {
if ($this->_modules[$id] instanceof Module) {
return $this->_modules[$id];
@ -353,6 +367,15 @@ abstract class Module extends Component
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;
}

2
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;

5
framework/yii/gii/generators/module/Generator.php

@ -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(
'{$this->moduleID}' => array(
'class' => '{$this->moduleClass}',
),
),
......
);
EOD;
return $output . '<pre>' . highlight_string($code, true) . '</pre>';

Loading…
Cancel
Save