如何加載外部站點模塊?我有一個通用模塊,我需要在不同的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