Zend framework Zend Framework-Doctrine2-将EntityManager存储为全局变量?

Zend framework Zend Framework-Doctrine2-将EntityManager存储为全局变量?,zend-framework,doctrine-orm,Zend Framework,Doctrine Orm,我正在构建我的第一个Zend/Doctrine项目,并希望能够在控制器中使用以下内容访问我的Doctrine2实体管理器: $this->em->persist($item); 有没有办法做到这一点,或者我应该把它放在Zend_注册表中,当条令引导时?在某种程度上,这取决于你如何引导条令。结果是将EntityManager作为资源存储在引导程序中,然后在控制器中检索它 例如,如果您有方法Bootstrap::_initdoctor()在其中实例化实体管理器,那么返回此实例将把它存储

我正在构建我的第一个Zend/Doctrine项目,并希望能够在控制器中使用以下内容访问我的Doctrine2实体管理器:

$this->em->persist($item);

有没有办法做到这一点,或者我应该把它放在Zend_注册表中,当条令引导时?

在某种程度上,这取决于你如何引导条令。结果是将EntityManager作为资源存储在引导程序中,然后在控制器中检索它

例如,如果您有方法
Bootstrap::_initdoctor()
在其中实例化实体管理器,那么返回此实例将把它存储在Bootstrap中,作为键
'doctor'
下的资源。然后,在控制器的
init()

$this->em = $this->getInvokeArg('bootstrap')->getResource('doctrine');
或者,如果使用,则必须再向下推一级才能获得实体管理器:

$this->em = $this->getInvokeArg('bootstrap')->getResource('doctrine')->getEntityManager();

我有一个DoctrineTityManager资源,它初始化了Doctrine框架并创建了EntityManager的一个实例。但是,我也希望将ZFDebug工具用于Doctrine,因此我必须使用Bootstrap.php来初始化Doctrine和ZFDebug,因为ZFDebug作为插件或引导初始化功能,需要EntityManager的一个实例—除非首先初始化Doctrine,否则这是不可能的。Matthew Weier O'Phinney编写了一个动作助手,允许在动作中使用$this->em