我有两个 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
配置中。
尝试使用
YiiBase::setPathOfAlias()
文档: http ://www.yiiframework.com/doc/api/1.1/YiiBase#setPathOfAlias-detail
Yii::setPathOfAlias('applicationA','path/to/applicationA/protected');
然后当你在配置中进行导入时:
'import' => array('applicationA.models.*'....
现在您将能够在 appB 中使用来自 appA 的模型。
模块、控制器和视图也可以这样做。视图 - viewPath 模块 - modulePath 控制器 - 在 index.php 中添加
$app->setControllerPath('////protected/controllers');
前$app->run();