1

1 つのサーバーにあるが異なるドメインにある 2 つの Web アプリケーションがあります (たとえば、アプリ A が管理で、アプリ B がクライアントです)。

問題は、アプリケーション A のモデル (ActiveRecords) をアプリケーション B で使用できるように共有したいということです。

これを行う賢い方法はありますか?

ありがとう!

4

3 に答える 3

3

もちろん、いくつかの簡単な手順に従うだけです。

1. モデルを共有ディレクトリに配置する

たとえば、現在のディレクトリ構造が次のようになっているとします。

/www
    /application1
        /protected
            /models
    /application2
        /protected
            /models

別の「共有」ディレクトリを作成します。一部のモデル以外を共有したい場合に備えて、いくつかの構造もそこに置くことをお勧めします。

/www
    /application1
        /protected
            /models
    /application2
        /protected
            /models
    /shared
        /models

共有したいアクティブなレコード モデルを に入れます/www/shared/models

2. 両方のアプリケーションで共有ディレクトリにエイリアスを設定します

両方のアプリケーションで構成ファイルに移動しmain.php、共有ディレクトリのエイリアスを作成します。

Yii::setPathOfAlias('shared','../shared/'); // or use an absolute path

3. 共有モデルのインポート

引き続きmain.php構成で、共有モデルをインポートします。

'import'=>array(
    // ...existing imports here...
    'shared.models.*',
),

アプリケーションのどこからでも共有クラスを直接参照できるようになり、Yii は適切なクラスを自動的にロードします。

後でさらにディレクトリを追加する場合は/shared、対応する行をimport構成に追加するだけです。

于 2013-09-09T09:41:28.197 に答える
3

1つのアプリで2番目のエイリアスを作成してみてください(そして2番目から1番目へ;))を使用して YiiBase::setPathOfAlias()

ドキュメント: http://www.yiiframework.com/doc/api/1.1/YiiBase#setPathOfAlias-detail

于 2013-09-09T09:31:01.120 に答える
1
Yii::setPathOfAlias('applicationA','path/to/applicationA/protected');

次に、構成でインポートを行うとき:

'import' => array('applicationA.models.*'....

これで、appA のモデルを appB で使用できるようになります。

モジュール、コントローラー、ビューでも同じことができます。ビュー - viewPath モジュール - modulePath コントローラー - index.php に追加

$app->setControllerPath('////protected/controllers');

$app->run();

于 2013-09-09T09:37:27.297 に答える