Yii2加载模块

时间:2017-07-18 14:45:48

标签: php yii2 yii2-advanced-app yii2-module

我如何加载外部站点模块?我有一个共同的模块,我需要加载在不同的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; ...

编辑器的顶部栏,其中包含类的路径和Yii返回的错误: Sublime top bar

enter image description here

编辑2:

感谢@Yupik的支持和建议,新设置:

bootstrap.php中:

Yii::setAlias('@common-modules', dirname(dirname(dirname(__DIR__))) . '/common_sites_modules');

主local.php:

'class' => '@common-modules\carrello\Carrello',

生成的错误:

enter image description here

与评论中建议的一样,解决方案是声明别名,然后使用别名来调用模块。就像@Yupik所建议的那样,我在common / config / bootstrap.php中设置了一个别名如下:

Yii::setAlias('@common_modules', dirname(dirname(dirname(__DIR__))) . '/common_modules');

在主要配置中:

'carrello' => [ 'class' => ''common_modules\carrello\Carrello', ... ]

显然,必须根据文件系统上的位置配置名称空间。 感谢您的建议

0 个答案:

没有答案