【问题标题】:How to pass parameters to Doctrine Entity Listener?如何将参数传递给 Doctrine Entity Listener?
【发布时间】:2014-06-23 10:35:05
【问题描述】:

我将 Doctrine2 与 ZendFramework2 一起使用。 我需要处理一些实体的生命周期事件,如下所述:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html 但我还需要侦听器中的一些附加参数,或者至少是 Zend ServiceManager 实例才能获取它们。 有什么方法可以让 Zend ServiceManager 在 Doctrine 监听器中或者传递一些参数给它?

<?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');
    }
}

【问题讨论】:

    标签: doctrine-orm zend-framework2


    【解决方案1】:

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

    这里是another question,它可能有助于理解魔法;)

    【讨论】:

    • 谢谢,但问题是侦听器是由 Doctrine 而不是 ZF 调用的,所以这个魔法对它不起作用。
    • 你错了 Alexey,它确实有效。侦听器可以通过 FQCN 或服务定位器检索 读取第 35 行:github.com/doctrine/DoctrineModule/blob/master/src/…
    猜你喜欢
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 2012-12-21
    相关资源
    最近更新 更多