2012-01-27 108 views
4

我工作的一个项目,有以下项目布局:更改Zend Framework的默认模块

|Project 
    |-Application 
     |-api 
     |-configs 
     |-controllers 
     |-models 
     |-modules 
      |-core 
       |-controllers 
       |-models 
       |-views 
       |-Bootstrap.php 
      |-site1 
      |-site2 
      |-site3 
     |-views 
     |-Bootstrap.php 
    |-Docs 
    |-Library 
    |-Public 
    |-.zfproject.xml 

我用这个在我的application.ini尝试设置default模块是core模块:

resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" 
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 

resources.frontController.defaultModule = "core" 
resources.frontController.defaultControllerName = "Index" 
resources.frontController.defaultAction = "index" 

resources.modules[] = "" 

我的问题是,由于某种原因,我无法在模块中工作的引导程序。这几乎就像默认模块没有被改变一样。应用程序的表现就像是,直到我尝试加载引导程序 - 我得到这个错误:

Fatal error: Uncaught exception 'Zend_Application_Resource_Exception' with message 'Bootstrap file found for module "default" but bootstrap class "Default_Bootstrap" not found' in M:\Zend_Framework\library\Zend\Application\Resource\Modules.php on line 85

这个错误前缀:

Zend_Application_Resource_Exception: Bootstrap file found for module "default" but bootstrap class "Default_Bootstrap" not found in M:\Zend_Framework\library\Zend\Application\Resource\Modules.php on line 85

任何人都可以看到我要去哪里错了吗?

我的应用程序/ bootstrap.php中的文件:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
{ 
} 

我的应用程序/核心/ bootstrap.php中的文件:

class Core_Bootstrap extends Zend_Application_Module_Bootstrap 
{ 
} 

回答

6

不是100%的这一点,但如果你删除以下行:

resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" 

可以解决该问题。如果我没有弄错,因为你使用模块,设置这将导致错误。

+0

这确实已经修复了! 对Zend_Application_Resource_Module中检测到的模块执行print_r操作,现在返回一个包含所有模块的数组,不包括“默认模块”! – Sjwdavies 2012-01-27 16:37:34

+0

谢谢艾伦,这让我m for了好几个小时! – Asciant 2012-02-26 23:58:16

+0

哇!谢谢,谢谢,谢谢!我在单元测试中遇到了这个问题,现在已经解决了! O / – 2013-12-17 17:26:06

0

看起来你可能会丢失从您的application.ini一行:使用它

resources.frontController.params.prefixDefaultModule = "" 

尝试这种方式,看看它的作品,我觉得这只是告诉在使用模块时,名为'默认'的模块没有前缀。
虽然我可能是错的,所以你可能不得不尝试。
好吧,也许两行缺少:)

resources.frontController.moduleControllerDirectoryName = "controllers"