官方文档
http://www.yiiframework.com/doc-2.0/guide-structure-modules.html
自己的一些理解:
application和console本质上也都是module
我们建立的module实质上都是application的子模块
module里加载特定配置
Module.php
<?php namespace appmodules estmod; /** * testmod module definition class */ class Module extends yiiaseModule { /** * @inheritdoc */ public $controllerNamespace = 'appmodules estmodcontrollers'; /** * @inheritdoc */ public function init() { parent::init(); Yii::configure($this, require(__DIR__ . '/config.php')); // custom initialization code goes here } }
config.php,这里和config/web.php的原理是一样的。
<?php return [ 'components' => [ 'db' => require(__DIR__ . '/db.php'), ], 'params' => [ 'adminEmail' => 'testmod@example.com', ], ];
控制器里使用模块的配置
print Yii::$app->params['adminEmail']; // application的参数 print $this->module->params['adminEmail']; // 当前模块的参数 print $this->module->db->createCommand("SELECT COUNT(1) FROM testmod")->queryScalar(); // 当前模块的组件
视图里使用模块的配置
<?= $this->context->module->params['adminEmail'] ?>