如何加载外部站点模块?我有一个公共模块需要在不同的 Yii2 站点中加载,例如高级模板,我的想法是有一个公共目录来存储我可以加载到每个站点的通用模块。文件系统结构可以是这样的:
/
site-1/
(loads modules from common-modules dir for site-1)
site-2/
(loads modules from common-modules dir for site-2)
common_sites_modules/
module-1/
module-2/
carrello/
Carrello.php
他的配置中的每个站点都必须从加载模块common-modules/
是否有可能实现这种结构?
编辑 1
配置:
'cart' => [
'class' => dirname(dirname(dirname(__DIR__))) . '/common_sites_modules/carrello/Carrello',
'params' =>[
...
],
'components' => [
...
],
],
这是 Carrello.php 类的第一行:
<?php
namespace common_sites_modules\carrello;
...
编辑2:
感谢@Yupik 的支持和建议,新设置:
引导程序.php:
Yii::setAlias('@common-modules', dirname(dirname(dirname(__DIR__))) . '/common_sites_modules');
主要本地.php:
'class' => '@common-modules\carrello\Carrello',
生成的错误:
就像评论中建议的那样,解决方案是声明一个别名,然后使用别名的名称来调用模块。就像@Yupik 建议的那样,我在 common/config/bootstrap.php 中设置了一个别名,如下所示:
Yii::setAlias('@common_modules', dirname(dirname(dirname(__DIR__))) . '/common_modules');
在主要配置中:
'carrello' => [
'class' => ''common_modules\carrello\Carrello',
...
]
显然,必须根据文件系统上的位置配置命名空间。感谢您的建议