2012-01-27 173 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"