我使用Zend Framework和我的应用程序的模块,我有兴趣以相同的方式集成Doctrine 2:
模块包含:
Doctrine 2的问题在于它需要一个实体目录和一个代理目录。我希望实体目录是我模块化结构中的模型目录,根据我的研究,我还没有找到解决方案。
目前,使用默认模块,元数据实现如下所示:
$config->setMetadataDriverImpl($config->newDefaultAnnotationDriver(APPLICATION_PATH . '/modules/default/models'));
如果我想添加一个新模块,让我们说“cms”我无法使用Doctrine来管理模型。
有没有人有解决问题的方法?
答案 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;
}
它会正常工作