如何在Symfony 2.4中使用Doctrine实体监听器?

4

我想在Symfony 2.4中使用Doctrine Entity Listener

我已经创建了一个类:

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


2
http://egeloen.fr/2013/12/01/symfony2-doctrine2-entity-listener-as-serice/ - Erfan
1个回答

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文档中的实体监听器.


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接