模块是个独立的软件单元,也是又控制器,视图,模型组成的,也可以有自己的布局。但他必须属于某个应用下,不能独立存在。
其中模块的控制器,视图和应用的控制器和视图使用基本相同,不作赘述,下面说说模块的使用。首先可以通过前面说的Gii来生成一个模块,然后配置模块,再web.php 配置文件里加入下面的东西。
[ 'modules' => [ 'admin' => [ 'class' => 'app\modules\admin\Module', // ... 模块其他配置 ... ], ], ]
在访问的时候就要比应用多一级目录了,就是模块id这一级。
在代码中获取模块分三种情况。
$module = MyModuleClass::getInstance(); //MyModuleClass对应的是模块类 // 获取ID为 "forum" 的模块 $module = \Yii::$app->getModule('forum'); // 获取处理当前请求控制器所属的模块 $module = \Yii::$app->controller->module;
引导启动:下面的配置表示debug模块在每个请求下都运行。
[ 'bootstrap' => [ 'debug', ], 'modules' => [ 'debug' => 'yii\debug\Module', ], ]
最后说明下,模块是可以嵌套的。
其实模块也是为了提高代码的重用性。一些常用特性,如用户管理,评论管理,可以开发成模块, 这样在相关项目中非常容易被重用。