1 つのサーバーにあるが異なるドメインにある 2 つの Web アプリケーションがあります (たとえば、アプリ A が管理で、アプリ B がクライアントです)。
問題は、アプリケーション A のモデル (ActiveRecords) をアプリケーション B で使用できるように共有したいということです。
これを行う賢い方法はありますか?
ありがとう!
もちろん、いくつかの簡単な手順に従うだけです。
たとえば、現在のディレクトリ構造が次のようになっているとします。
/www
/application1
/protected
/models
/application2
/protected
/models
別の「共有」ディレクトリを作成します。一部のモデル以外を共有したい場合に備えて、いくつかの構造もそこに置くことをお勧めします。
/www
/application1
/protected
/models
/application2
/protected
/models
/shared
/models
共有したいアクティブなレコード モデルを に入れます/www/shared/models
。
両方のアプリケーションで構成ファイルに移動しmain.php
、共有ディレクトリのエイリアスを作成します。
Yii::setPathOfAlias('shared','../shared/'); // or use an absolute path
引き続きmain.php
構成で、共有モデルをインポートします。
'import'=>array(
// ...existing imports here...
'shared.models.*',
),
アプリケーションのどこからでも共有クラスを直接参照できるようになり、Yii は適切なクラスを自動的にロードします。
後でさらにディレクトリを追加する場合は/shared
、対応する行をimport
構成に追加するだけです。
1つのアプリで2番目のエイリアスを作成してみてください(そして2番目から1番目へ;))を使用して
YiiBase::setPathOfAlias()
ドキュメント: http://www.yiiframework.com/doc/api/1.1/YiiBase#setPathOfAlias-detail
Yii::setPathOfAlias('applicationA','path/to/applicationA/protected');
次に、構成でインポートを行うとき:
'import' => array('applicationA.models.*'....
これで、appA のモデルを appB で使用できるようになります。
モジュール、コントローラー、ビューでも同じことができます。ビュー - viewPath モジュール - modulePath コントローラー - index.php に追加
$app->setControllerPath('////protected/controllers');
前$app->run();