Zend Framework采用模块化结构+ Doctrine 2

时间:2010-12-09 12:07:56

标签: php zend-framework doctrine-orm

我使用Zend Framework和我的应用程序的模块,我有兴趣以相同的方式集成Doctrine 2:

模块包含:

  • 控制器
  • 模型
  • 视图
  • 助手

Doctrine 2的问题在于它需要一个实体目录和一个代理目录。我希望实体目录是我模块化结构中的模型目录,根据我的研究,我还没有找到解决方案。

目前,使用默认模块,元数据实现如下所示:

$config->setMetadataDriverImpl($config->newDefaultAnnotationDriver(APPLICATION_PATH . '/modules/default/models'));

如果我想添加一个新模块,让我们说“cms”我无法使用Doctrine来管理模型。

有没有人有解决问题的方法?

3 个答案:

答案 0 :(得分:4)

经过几个小时的工作,我想出了正确的解决方案。需要注意的是,Doctrine的\ ORM \ Configuration类的newDefaultAnnotationDriver,setProxyDir和setProxyNamespace方法也可以接收数组参数。

这就是说,你需要为每个模块传递带有模型路径的数组,它将起作用

答案 1 :(得分:0)

我在应用程序级文件夹中有我的代理(自动生成),这是我的目录结构:

/project
    /application
        /domain
            /proxies
        /configs
        /modules
            /blog
                /controllers
                /views
                /domain
                    /entities
                    /services
                    /repositories
    /library
    /public
    /data

答案 2 :(得分:0)

如果为每个模块创建引导程序文件

<?php
class User_Bootstrap extends Zend_Application_Module_Bootstrap
{
    protected function _initAutoload()
    {
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'User_',
            'basePath' => dirname(__FILE__) . '/modules/user',
            ));
            return $autoloader;
    }
}

并将其置于默认的bootsrap中以加载默认模块模型

protected function _initAutoload()
    {
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Default_',
            'basePath' => dirname(__FILE__) . '/modules/default',
            ));
            return $autoloader;
    }

它会正常工作