2012-02-21 87 views
3

我有一个非常奇怪的情况,其中我的模块正在工作,但我的模块的boostrap没有被加载。Zend模块Bootstrap不加载

这里是自动加载模块在我的application.ini段:

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.modules[] = "" 

这里是引导程序:

protected function _initAutoload() 
    { 
     $autoloader = new Zend_Application_Module_Autoloader(array(
      'namespace' => 'User_', 
      'basePath' => APPLICATION_PATH .'/modules/user', 
      'resourceTypes' => array (
      'model' => array(
       'path' => 'models', 
       'namespace' => 'Model', 
       ) 
      ) 
     )); 
    } 

我模块

Application 
--modules 
----user 
------config/ 
------controllers/ 
------models/ 
------views/ 
------Bootstrap.php 
----admin 

这里的问题结构是没有加载User_Bootstrap。

<?php 

class User_Bootstrap extends Zend_Application_Module_Bootstrap 
{ 

    protected function _initAutoload() 
    { 
     Zend_Registry::set('debug', 'haha'); 
    } 
} 

通过做任何的控制器上合适的词汇::得到(“调试”),它不承认,关键是在模块设置引导。事实上,User_Bootstrap中的任何语法错误都不起作用。

我不知道为什么User_Bootstrap没有被自动加载。这让我疯狂,因为我一直在研究5个小时,甚至无法获得博客文章接近覆盖这种情况...

说到这,我的模型和控制器类正在自动加载罚款。

回答

1

不确定,但它可能就像不正确的情况一样简单。 --Modules在您的结构中,但您一直将其称为/modules。这些应该匹配大小写。

我希望就这么简单。

不要在模块引导程序中复制主引导程序的函数名称,据我所知在ZF 1.x中所有的boostraps都会在每次调用时得到处理,我认为您的主引导程序中的_initAutoload覆盖了模块引导。

尝试调用一些不同的_initModuleAutoload函数。
至少值得一试:)

+0

对不起,我犯了一个错字。它在我的目录中是小写的。我不认为这应该是问题,因为模块本身正在工作。它正在加载所有的控制器,模型和视图。唯一没有加载的是Bootstrap。 – shiva8 2012-02-21 03:24:31

+0

@DylanSumiskum检查编辑,可能有一个可能的解决方案, – RockyFord 2012-02-21 04:19:42

0

您是否尝试过在的application.ini配置文件中禁用frontController目录?尝试评论/删除此行:

resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"