2011-06-10 22 views
0

我有两个模块: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引导运行?

+0

是否检查site.ru实际上并没有使用管理模块?检查请求对象并查看它开始使用的模块/控制器/操作。 – Niklas 2011-06-10 14:38:26

+0

是的,我做过。它的默认索引控制器在$ this-> getRequest() - > getModuleName()上返回'default'。并且管理员索引控制器返回'admin'。 – Anthony 2011-06-10 14:54:41

回答

2

是的,这是Zend的工作方式。如果您启用模块资源到您的应用程序配置(最终application.ini)

resource.modules= 

所有模块在引导时自引导。如果您想根据请求被路由到哪个模块来切换行为,您可以使用控制器插件进行规划。

考虑到第一个hook知道哪个模块/控制器/动作是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 
    } 

} 
相关问题