我正在使用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.