2010-11-03 79 views
2

嗨,我在一个基于模块的Zend Framework应用,它采用以下结构工作:Zend框架:没有前缀的默认模块的使用模式

application 
    modules 
     backend 
      controllers, models etc... 
     frontend 
      controllers, models etc. 

因此,所有前端模型将被称为initated新Frontend_Model _ *()... 但我不喜欢这个解决方案,因为我也想在后端的模型。

对于控制器端,我用我的application.ini中的以下选项:

resources.frontController.params.prefixDefaultModule = false 

现在我Frontend_IndexController简称为Index_Controller。 有没有一种简单的方法来做模型,表单等相同?

这意味着像“new Model _ *()”这样的调用应直接导致前端模块,这是默认模块。要调用后端模型,我不得不使用“new Backend_Model _ *()”...

在此先感谢!

+0

我建议使用模块化目录结构(所有带前缀的模块)。 – takeshin 2010-11-03 13:54:14

回答

0

我设法让这个东西有效。为了在上述情况下使用自动加载,我必须做我的前端内以下引导文件:

protected function _initAutoload() 
{ 
    $autoloader = new Zend_Application_Module_Autoloader(array(
     'namespace' => '', 
     'basePath' => dirname(__FILE__), 
    )); 
} 

这台自动加载前缀不了了之,因此可以通过“新Model_启动前端模式* ()”。后端模型仍然可以通过“新Backend_Model _ *()”启动

注:前端引导文件是唯一一个,这应该为了得到这个东西运行感动!

希望帮助别人!

+0

不相关,但如果您使用PHP 5.3,则可以使用\ _ \ _ DIR \ _ \ _而不是dirname(\ _ \ _ FILE \ _ \ _) – Maxence 2010-11-03 14:15:32