【问题标题】:Zend Framework: Use model of default module without prefixZend Framework:使用不带前缀的默认模块模型
【发布时间】:2011-05-04 10:08:57
【问题描述】:

大家好,我正在开发一个基于模块的 zend 框架应用程序,它使用以下结构:

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

因此,所有前端模型都将由调用 new Frontend_Model_*() 启动... 但我不喜欢这个解决方案,因为我也想要后端的模型。

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

resources.frontController.params.prefixDefaultModule = false

现在我的 Frontend_IndexController 简称为 Index_Controller。 有没有一种简单的方法可以对模型、表单等做同样的事情?

这意味着像“new Model_*()”这样的调用应该直接指向前端模块,这是默认模块。要调用后端模型,我必须使用“new Backend_Model_*()”...

提前致谢!!!

【问题讨论】:

  • 我建议使用模块化目录结构(所有模块都带有前缀)。

标签: php zend-framework configuration model


【解决方案1】:

我设法让这件事发挥作用。为了在上述情况下使用自动加载,我必须在我的前端引导文件中执行以下操作:

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

这会将自动加载前缀设置为空,因此可以通过“new Model_*()”启动前端模型。后端模型仍然可以通过“new Backend_Model_*()”来启动

注意:前端引导文件是唯一的,为了让这个东西运行,应该触摸它!

希望对某人有所帮助!

【讨论】:

  • 不相关,但如果你使用 PHP 5.3,你可以使用 __DIR__ 代替 dirname(__FILE__)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-27
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多