如何将参数传递给Doctrine Entity Listener?

时间:2014-06-23 10:35:05

标签: doctrine-orm zend-framework2

我正在使用Doctrine2和ZendFramework2。 我需要处理某些实体的生命周期事件,如下所述:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html 但我还需要在侦听器中使用一些额外的参数,或者至少需要Zend ServiceManager实例才能获取它们。 有没有办法在Doctrine监听器中安装Zend ServiceManager或将一些参数传递给它?

<?php
class ProductListener implements EventSubscriber
{
    public function getSubscribedEvents()
    {
        return array(
            'postUpdate',
        );
    }

    public function postUpdate(LifecycleEventArgs $args) 
    {
        $entity = $args->getObject();
        $entityManager = $args->getObjectManager();

        // need to pass additional parameters here like
        $config = $this->getServiceLocator()->get('config');
    }
}

1 个答案:

答案 0 :(得分:0)

考虑实施ZF2的ServiceLocatorAwareInterface。这需要通过服务管理器/定位器本身(以及模块/应用程序配置中的相关可调用/工厂声明)实例化您的侦听器,而不是像链接示例中所示直接新建它。

以下another question可能有助于理解魔法;)