Yii2模块动态加载

Programming3年前 (2022)更新 bruce
245 0
内容纲要

需求场景

按照get请求参数来动态加载
需要按照域名或者机构动态加载或不加载业务模块,针对这个需求,需要实现

'on beforeRequest' => function ($event) {
    // 获取 Yii::$app->request->get('code') 然后使用 Model 去查询 
    // 跟写 action 一样的去写代码
    $v1 = (true) ? 'v1' : 'v2' ;
    // 判断对应的文件或者模块是否存在(省略)
    Yii::configure(Yii::$app, [
            'modules' => [
                'v1' => [
                    'class' => "app\\modules\\{$v}\\Module",
                ],
            ],
        ]
    );
},
'components' => [

]

Yii2 应用事件 on beforeRequest

动态的加载模块、模型、配置等

在UrlManager之前加载模块,/common/modules/gopay/GopayModule.php

Yii::$app->setModule('gopayModule', ['class' => '\common\modules\gopay\GopayModule']);

动态修改配置值

\Yii::$app->name = 'new name';

动态修改组件配置值

\Yii::$app->componentName->settings['mode'] = 'new mode';
© 版权声明

相关文章

暂无评论

暂无评论...