如何加载外部站点模块?我有一个通用模块,我需要在不同的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
Yii2加载模块
每个站点都在他的配置必须从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');
ma在-local.php:
'class' => '@common-modules\carrello\Carrello',
产生的错误:
提出类似的意见,解决办法是宣布一个别名,然后调用使用别名的名称模块。像由@Yupik建议我在公共/配置设置/ bootstrap.php中的别名如下:
Yii::setAlias('@common_modules', dirname(dirname(dirname(__DIR__))) . '/common_modules');
在主要配置:
'carrello' => [ 'class' => ''common_modules\carrello\Carrello', ... ]
显然命名空间有根据文件系统上的位置进行配置。 感谢您的建议
是的,这是可能的。 – Yupik
好吧,但我有一些问题,加载模块,在配置的类'参数我设置模块的绝对路径,但每次我收到'类/ var/www/html/common_sites_modules /我的模块/ MyClass不当用路径生成新的ReflectionClass对象时,存在异常,路径是否正确,为什么这个异常? – MarBer
由于你做错了事,分享代码,否则我们无法帮助你。 – Yupik