我正在构建文件夹结构和全局配置,以允许我在Yii框架上创建应用程序,其中所有应用程序都可以共享公共代码,扩展或模块。
这个想法是,每个应用程序都具有该应用程序的业务级别,但是,可以在应用程序之间共享的所有内容,我们希望将其用作公共存储库(模型,扩展,小部件等)
例如,我们希望共享Auth扩展名来控制系统权限,但我想在公共文件夹下“安装”Auth,而不是在每个应用程序下。
下面是我想要构建的架构:
我发现YiiBoilerplate是类似的东西,但他们没有以我们想要的方式配置Yii。
文件夹结构的愿望是:
common/
css/
images/
protected/
commands/
components/
config/
controllers/
extensions/
models/
views/
Application1/
css/
images/
protected/
commands/
components/
config/
controllers/
extensions/
models/
views/
所以,让我们去寻找一些观点:
如果我的用户在应用程序X(www.applicationx.com)下,并且登录页面是'通用'结构,我想向用户显示如下内容:www.applicationx.com/index.php R =用户/登录。
我希望能够轻松地在应用程序文件夹和公共文件夹之间“导航”。
我不想使用Theme,因为我有不同的应用程序,具有不同的视觉要求和行为。
对此有何想法?有什么好建议吗?提前谢谢!
答案 0 :(得分:0)
好吧,我找到了一些方法。
首先,我的文件夹结构与它类似:
common/
css/
images/
js/
extensions/
bootstrap/
auth/
protected/
/* Yii Default directory folder*/
Application1/
css/
images/
js/
protected/
/* Yii Default directory folder*/
return array(
'import'=>array(
'common.components.*',
'common.models.*',
),
'modules' => array(
'auth',
),
'components' => array(
'authManager' => array(
'behaviors' => array(
'auth' => array(
'class' => 'common.modules.auth.components.AuthBehavior',
'admins'=>array('admin', 'foo', 'bar'),
),
),
),
'user' => array(
'class' => 'common.modules.auth.components.AuthWebUser',
),
'bootstrap'=>array(
'class'=>'common2.extensions.bootstrap.components.Bootstrap',
),
),
);
登录在'common'下,因此,为了重定向到登录页面,我只需调用SiteController.php
并在那里实现登录过程,让用户能够选择他想要的应用程序进去。
登录后,我将用户重定向到应用程序地址:
$this->redirect(Yii::app()->request->getBaseUrl(true) . "/../" .$App. "/" . "");
在应用程序下,index.php
文件具有公共目录的alias
,这是他们仍然可以“说话”的方式。
Yii::setPathOfAlias('common', dirname(__FILE__) . $directory);
如果你想做类似事情并且难以理解,请告诉我,如果你需要,我会在这里提供更多信息。