どのように外部サイトモジュールをロードできますか?私は別の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; ...
のトップバークラスのパスとエラーが返されたエディタYiiのことで:
編集2:
は、サポートのため@Yupikのおかげと示唆して、新しい設定:
bootstrap.phpの:
Yii::setAlias('@common-modules', dirname(dirname(dirname(__DIR__))) . '/common_sites_modules');
ma中-local.phpファイル:
'class' => '@common-modules\carrello\Carrello',
発生したエラー:
などが解決策は、エイリアスを宣言して、コールのエイリアスの名前を使用することで、コメントで示唆モジュール。 @Yupikによって提案されたように私は、共通の/ configに/ bootstrap.phpの次のようにエイリアスに設定しました:主要な構成で
Yii::setAlias('@common_modules', dirname(dirname(dirname(__DIR__))) . '/common_modules');
:
'carrello' => [ 'class' => ''common_modules\carrello\Carrello', ... ]
名前空間がする必要はありファイルシステム上の位置に基づいて構成することができます。 アドバイスありがとう
はい、可能です。 – Yupik
しかし、私はモジュールの絶対パスを設定する 'class'パラメータでモジュールを読み込むのにいくつか問題がありますが、' Class/var/www/html/common_sites_modules/my-module/MyClassは受け取りません新しいReflectionClassオブジェクトがパスで生成されたときに 'exists'例外が発生しました。パスは正しいので、なぜこの例外が発生しますか? – MarBer
あなたは何か間違ったことをしているので、コードを共有しないと、私たちはあなたを助けることができません。 – Yupik