Zend Framework: загрузка модулей из другого каталога - PullRequest
0 голосов
/ 23 июня 2010

Привет, ребята, это мой первый вопрос о переполнении стека.Я подумал, что этот веб-сайт мне очень помог, поэтому я тоже попробую.

В настоящее время я работаю над несколькими приложениями 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 голосов
/ 24 июня 2010

При начальной загрузке ваших модулей вы делаете это как Zend_Application_Module_Bootstrap.Это очевидно, но файл также должен находиться в папке корневого модуля.

0 голосов
/ 23 июня 2010

Вы можете использовать config resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" в вашем пути config.ini , а затем просто использовать автозагрузчик.

Это работает для меня, я просто использовал модули из другого приложения, изменив путь для resources.frontController.moduleDirectory в config.ini.

Чтобы попробовать его в своей конфигурации, в application2 config.ini вы должны поместить resources.frontController.moduleDirectory = APPLICATION_PATH "/../application1/application/modules"

LE: Если вы хотите, чтобы модули загружались, добавьте config.ini resources.modules[] = "" после строки с moduleDirectory. Пробовал сам и без этого другие модули не загружаются при входе в случайный модуль.

...