我如何加载外部站点模块?我有一个共同的模块,我需要加载在不同的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的支持和建议,新设置:
bootstrap.php中:
Yii::setAlias('@common-modules', dirname(dirname(dirname(__DIR__))) . '/common_sites_modules');
主local.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',
...
]
显然,必须根据文件系统上的位置配置名称空间。 感谢您的建议