Все загрузчики модулей всегда выполняются по одному запросу. - PullRequest
0 голосов
/ 10 июня 2011

У меня есть два модуля: admin, default.Каждый из них имеет один загрузчик:

class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{
     function _initSmth()
     {
          echo 'admin';
          die();
     }
}

и один по умолчанию:

 class Default_Bootstrap extends Zend_Application_Module_Bootstrap
    {
         function _initSmth()
         {
              echo 'default';
              die();
         }
    }

Если я запускаю site.ru или site.ru/admin/, он всегда возвращает 'admin'.Почему по умолчанию начальная загрузка запускается с помощью начальной загрузки администратора?

1 Ответ

2 голосов
/ 10 июня 2011

Да, именно так работает Zend.Если вы включите ресурс модуля в конфигурацию вашего приложения (как правило, application.ini)

resource.modules=

Все модули загружаются во время начальной загрузки.Если вы хотите переключать поведение в зависимости от того, на какой модуль был направлен запрос, вы можете планировать с помощью плагина контроллеров.

Учтите, что первая ловушка, которая знает, какой модуль / контроллер / действие является routeShutdown, но зависит от того, чтовам нужно сделать, вы можете использовать другие крючки.

Вот пример

Plugin_Test extends Zend_Controller_Plugin_Abstract {

public function routeShutdown (Zend_Controller_Request_Abstract $request){

    switch($request->getModuleName()) {

        case 'default':
        // do something
        break;
        case 'admin':
        // do something else
    }

}
...