Как использовать Doctrine Entity Listener с Symfony 2.4?
Я хочу использовать 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 ответ
Решение
Чтобы зарегистрировать конкретный экземпляр прослушивателя сущностей в Symfony, выполните следующие действия:
1) Обновите DoctrineBundle в вашем composer.json до версии 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 }