我想将Doctrine Entity Listener与Symfony 2.4一起使用。
我创建了一个类:
<?php
namespace MyBundle\Listener\Entity;
use Doctrine\ORM\Event\LifecycleEventArgs;
use MyBundle\Entity\User;
class UserListener
{
public function postPersist(User $user, LifecycleEventArgs $event)
{
}
}
我添加了地图信息:
<?xml version="1.0" encoding="UTF-8" ?>
<doctrine-mapping>
<entity name="MyBundle\Entity\User">
...
<entity-listeners>
<entity-listener class="MyBundle\Listener\Entity\UserListener" />
</entity-listeners>
</entity>
</doctrine-mapping>
工作正常。但是如何将一些服务传递给这个类呢?我希望它与Symfony的服务容器集成并提供服务。
答案 0 :(得分:6)
要在symfony中注册特定的实体侦听器实例,请按照以下步骤操作:
1)将composer.json中的DoctrineBundle更新为版本1.3(因为它还不稳定):
{
"require": {
"doctrine/doctrine-bundle": "1.3.x-dev",
}
}
2)使用标签名称“doctrine.orm.entity_listener”注册您自己的服务:
my.listener:
class: MyBundle\Listener\Entity\UserListener
arguments: [ ... ]
tags:
- { name: doctrine.orm.entity_listener }