2012-02-14 85 views

回答

1

在某种程度上,它取决于你如何引导学说。结果是让EntityManager作为资源存储在Bootstrap中,然后在控制器中检索它。例如,如果您有其中您实例化实体管理器的方法Bootstrap::_initDoctrine(),则返回此实例会将其作为资源存储在引导程序中,作为密钥'doctrine'下的资源。然后,在你的控制器的init()方法,你可以有:

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

另外,如果您使用Bisna application resource plugin for Doctrine,那么你必须按下一个多水平得到实体管理器:

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

我一个DoctrineEntityManager资源,用于初始化Doctrine框架并创建一个EntityManager的实例。不过,我也想在Doctrine中使用ZFDebug工具,所以我不得不使用Bootstrap.php来初始化Doctrine和ZFDebug,因为ZFDebug作为插件或Bootstrap初始化特性需要一个EntityManager的实例 - 这是除非教条初始化,否则不可能。 Matthew Weier O'Phinney写了一个动作助手http://mwop.net/blog/235-A-Simple-Resource-Injector-for-ZF-Action-Controllers,它允许$ this-> em在动作中使用 – Sjwdavies 2012-02-14 17:02:40