如何在Symfony 2.4中使用Doctrine Entity Listener?

时间:2014-03-01 12:18:13

标签: symfony doctrine

我想将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的服务容器集成并提供服务。

1 个答案:

答案 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 }

请参阅Symfony docs on Entity Listeners