0
我建设我的第一次的Zend /学说项目,并希望能够访问使用类似我的控制器我Doctrine2实体管理器:Zend Framework - Doctrine2 - 将EntityManager存储为全局变量?
$this->em->persist($item);
有没有办法做到这一点,或者我应该把当教条被引导时它在Zend_Registry中?
我建设我的第一次的Zend /学说项目,并希望能够访问使用类似我的控制器我Doctrine2实体管理器:Zend Framework - Doctrine2 - 将EntityManager存储为全局变量?
$this->em->persist($item);
有没有办法做到这一点,或者我应该把当教条被引导时它在Zend_Registry中?
在某种程度上,它取决于你如何引导学说。结果是让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();
我一个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