Change Zend Framework Default Module

匿名 (未验证) 提交于 2019-12-03 03:10:03

问题:

I'm working on a project and have the following project layout:

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

I've used this in my application.ini to try and set the default module to be the core module:

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[] = ""

My problem is that for some reason, I can't get bootstraps working in the modules. It's alsmost as if the default module isn't being changed. The application behaves like it is, until I try and load the bootstraps - I get this error:

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

Prefixed by this error:

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

Can anyone see where I'm going wrong?

My Application/Bootstrap.php file:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { }

My Application/Core/Bootstrap.php file:

class Core_Bootstrap extends Zend_Application_Module_Bootstrap  {    }

回答1:

Not 100% on this but if you remove the following line:

resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

that may resolve the issue. If i'm not mistaken, as you're using modules, setting this will cause an error.



回答2:

Looks like you might be missing one line from your application.ini:

resources.frontController.params.prefixDefaultModule = ""

Try using it this way and see if it works, I think this just tells the app that when using modules, the module named 'default' has no prefix.
Although I could be wrong so you may have to experiment.
Ok, maybe two lines are missing :)

resources.frontController.moduleControllerDirectoryName = "controllers"


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!