6

我将 Zend Framework 与模块一起用于我的应用程序,并且我对以相同方式集成 Doctrine 2 感兴趣:

一个模块包含:

  • 控制器
  • 楷模
  • 意见
  • 帮手

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

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

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

如果我想添加一个新模块,比如说“cms”,我无法使用 Doctrine 管理那里的模型。

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

4

3 回答 3

4

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

话虽这么说,您需要为每个模块传递带有模型路径的数组,它会起作用

于 2010-12-09T14:58:47.967 回答
0

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

/project
    /application
        /domain
            /proxies
        /configs
        /modules
            /blog
                /controllers
                /views
                /domain
                    /entities
                    /services
                    /repositories
    /library
    /public
    /data
于 2011-01-04T04:55:22.570 回答
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;
    }
}

并将其放在默认引导程序中以加载默认模块模型

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

它会正常工作

于 2011-05-07T19:56:50.120 回答