在Yii2 中模塊是能夠無限級嵌套的,也就是說,模塊能夠包含另外一個包含模塊的模塊,咱們稱前者爲父模塊,後者爲子模塊, 子模塊必須在父模塊的yiibaseModule::modules屬性中申明,例如:
在Yii2的advanced版本的rest-api下創建嵌套模塊,在forum模塊(父模塊)下嵌入admin模塊(子模塊)
api下的modules的文件結構以下php
--api ----modules ------forum(父模塊) --------Module.php --------controllers --------models --------admin(子模塊) ----------Module.php ----------models ----------controllers
forum下的Module.php須要修改init方法api
namespace api\modules\forum; class Module extends \yii\base\Module { public $controllerNamespace = 'api\modules\forum\controllers'; public function init() { parent::init(); $this->modules = [ 'admin' => [ // 此處應考慮使用一個更短的命名空間 'class' => 'api\modules\forum\admin\Module', ], ]; } }
admin下的Module.phpyii
namespace api\modules\forum\admin; class Module extends \yii\base\Module { public $controllerNamespace = 'api\modules\forum\admin\controllers'; public function init() { parent::init(); // \Yii::configure($this, require(__DIR__ . '/config.php')); } }
在嵌套模塊中的控制器,它的路由應包含它全部祖先模塊的ID,例如forum/admin/default/index 表明 在模塊forum中子模塊admin中default控制器的index操做。ide