1

我有两个 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

尝试使用 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.*'....

现在您将能够在 appB 中使用来自 appA 的模型。

模块、控制器和视图也可以这样做。视图 - viewPath 模块 - modulePath 控制器 - 在 index.php 中添加

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

$app->run();

于 2013-09-09T09:37:27.297 回答