如何将参数/服务注入Doctrine Entity Listener

时间:2018-06-15 08:08:49

标签: doctrine-orm symfony4

我正在使用Symfony 4尝试将参数注入Doctrine Entity Listener

Konfiguration:

App\EventListener\MyListener:
    arguments:
        - "%kernel.cache_dir%"
    tags:
        - { name: doctrine.orm.entity_listener }

实体类注释:

@ORM\EntityListeners({"App\EventListener\MyListener"})

监听器:

namespace App\Eventlistener;
use Doctrine\ORM\Event\LifecycleEventArgs;
class MyListener {

    private $cacheDirectory;

    public function __construct($cacheDirectory)
    {
        $this->cacheDirectory = $cacheDirectory;
    }

    public function postUpdate($entity, LifecycleEventArgs $args)
    {
        ...
    }
}

更新实体时,我得到例外: 函数__construnt()的参数太少。 0传入... \ vendor \ doctrine \ doctrine-bundle \ Mapping \ ContainerAwareEntityListenerResolver.php第76行,正好是1预期

我也尝试过setter注入,但似乎永远不会调用setter方法。

(这是一个简化的演示 - 我实际上需要注入一个服务并在postUpdate中使用它)

文档:https://symfony.com/doc/master/bundles/DoctrineBundle/entity-listeners.html(但没有DI)

更新:我找到this Answer,但这不适用于symfony 4.

0 个答案:

没有答案