Zend Framework:从另一个目录加载模块

时间:2010-06-23 08:03:27

标签: php zend-framework module autoload

嘿,伙计们,这是我关于Stack Overflow的第一个问题。我认为这个网站帮了我很多,所以我也试一试。

我目前正在研究需要从公共模块目录继承模块的多个Zend Framework应用程序。使用的文件结构是传统方法(省略实际名称和保护应用程序结构的引用):

/application1
    /application
        /modules
            /module1
            /module2
            /module3
            /...

/application2
    /application

目前我已尝试手动自动加载Application2引导程序中的每个模块,如下所示:

$moduleLoader = new Zend_Application_Module_Autoloader(
    array('namespace' => 'Prefix', 'basePath' => path_to_application1_application_modules_modulename)
);
$autoloader->pushAutoloader($moduleLoader);

这很有效,但正如你可以想象的那样,这将变得非常繁琐。现在我也尝试在FrontController中设置公共模块目录,如下所示:

$frontController = Zend_Controller_Front::getInstance();
$frontController->addModuleDirectory(path_to_application1_application_modules);

但这似乎不是任何模块的Bootstrap。我忘记了重要的事情吗?非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您可以在 config.ini 路径中使用配置resources.frontController.moduleDirectory = APPLICATION_PATH "/modules",然后只使用自动加载器。

它适用于我,我只是通过更改config.ini中resources.frontController.moduleDirectory的路径来使用其他应用程序中的模块。

要在您的配置上进行尝试,请在 application2 config.ini中添加resources.frontController.moduleDirectory = APPLICATION_PATH "/../application1/application/modules"

LE: 如果您希望模块引导,请在带有moduleDirectory的行之后添加 config.ini resources.modules[] = ""。我自己试了一下,如果没有这个,进入随机模块时其他模块都不会自动启动。

答案 1 :(得分:0)

当引导你的模块时,你是以Zend_Application_Module_Bootstrap的形式进行的。很明显,但文件也应该在根模块文件夹中。