版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liuzp111/article/details/53326024
yii扩展性
- 模块化
- 事件机制
- mixin(混合、多重继承)
- 依赖注入
模块化
访问Gii创建模块
http://127.0.0.1/Yii/yii2-demo/web/index.php?r=gii
- 1
创建一级模块article
,如下所示:
生成模块后,需要在config\web.php中配置模块参考
<?php $params = require(__DIR__ . '/params.php'); $config = [ 'modules' => [ 'article' => [ 'class' => 'app\modules\article\article',//上图提示参数粘贴到web.php ], ],
一级模块访问:
第一种:需要通过在controller中的文件访问子模块
class GiilearnController extends Controller
{
/** * 1) * http://127.0.0.1/Yii/yii2-demo/web/index.php?r=giilearn/index * 访问上述地址即可到达子模块 * 2)直接访问子模块 * http://127.0.0.1/Yii/yii2-demo/web/index.php?r=article/default/index */
public function actionIndex()
{
//获取子模块,读取的是子模块的ID,子模块需要在config\web.php中配置
$article = \Yii::$app ->getModule('article');
//调用子模块的操作
$article ->runAction('default/index');
}
}
第一种:直接访问子模块
http://127.0.0.1/Yii/yii2-demo/web/index.php?r=article/default/index
创建二级模块category
此模块创建于article模块下,即为article的子模块,如下所示
子模块下的子模块的配置信息最好写在上一级模块生成的模块id的php文件中,比如例子所示的分类模块(子模块下的子模块的配置信息最好写在上一级模块生成的模块id的php文件中,比如例子所示的分类模块的父模块是article,此时把分类模块的配置写在article.php就好)的父模块是Article,此时配置Article.php就好
<?php namespace app\modules\article; class article extends \yii\base\Module { public $controllerNamespace = 'app\modules\article\controllers'; public function init() { parent::init(); //在父模块中配置子模块http://127.0.0.1/Yii/yii2-demo/web/index.php?r=article/category/default/index $this->modules = [ 'category' => [ 'class' => 'app\modules\article\modules\category\category', ], ]; // custom initialization code goes here } }
生成的文件结构为: