【发布时间】:2012-02-29 16:20:07
【问题描述】:
我正在使用模块构建一个多站点 Zend Framework 应用程序,结构如下:
|Project
|-Application
|-configs
|-modules
|-core
|-controllers
|-models
|-views
|-Bootstrap.php
|-site1
|-controllers
|-models
|-views
|-Bootstrap.php
|-site2
|-site3
|-Bootstrap.php
|-Docs
|-Library
|-Public
|-.zfproject.xml
每个模块都扩展核心模块。
我的模块中有以下内容:
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] = ""
Boostrap /application/modules/core/bootstrap.php 和 /application/modules/xxx/bootstrap.php 的最佳方法是什么,其中“xxx”是正在加载的模块的名称?
我可以在每个 Bootstrap 方法的顶部进行检查吗?
或者,我是否应该只为我在 Core 旁边请求的站点添加模块,因此只会加载两个 Bootstrap.php 文件?
编辑
如果我从 application.ini 中删除 resources.modules[] = "",并在我的主 Bootstrap.php 中使用以下代码添加模块,它似乎添加了控制器,但实际上并未触发位于模块中的 Bootstrap.php ?
$frontController = $this->getResource('frontController');
$frontController->addControllerDirectory(APPLICATION_PATH . '/modules/site1/controllers', 'site1');
【问题讨论】:
-
见this post by MWOP。特别要注意的是,他建议在路由完成后触发前端控制器插件,检查正确的模块,否则尽早退出。
-
大卫,你能把这个作为这个问题的附加答案吗?
-
@Sjwdavies:我还需要每个站点扩展的核心模块,就像您的示例一样。您是如何路由到正确的站点文件夹的?
标签: zend-framework