You are browsing a version that has not yet been released. |
Event Listeners
In opposite to Entity Listeners, Event listeners are services that listen for all entities in your application.
See https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#implementing-event-listeners for more info on event listeners.
To register a service to act as an event listener you have to tag it with the
doctrine.event_listener tag:
Starting with Doctrine bundle 2.8, you can use the AsDoctrineListener
attribute to tag the service.
// src/App/EventListener/SearchIndexer.phpnamespace App\EventListener;use Doctrine\Bundle\DoctrineBundle\Attribute\AsDoctrineListener;use Doctrine\ORM\Event\LifecycleEventArgs;#[AsDoctrineListener('postPersist'/*, 500, 'default'*/)]class SearchIndexer{ public function postPersist(LifecycleEventArgs $event): void { // ... }}
Ordering Listeners
With symfony/doctrine-bridge 8.2 or higher, a listener can specify which
other listeners of the same event it should run before or after, as
service ids or classes, instead of relying on the priority option:
#[AsDoctrineListener('postPersist', after: AuditLogger::class)]class SearchIndexer
The doctrine.event_listener tag accepts the same before and after
options. With older versions of symfony/doctrine-bridge, the tag ignores
them, and the attribute throws an exception.
When declared, priority is kept: before and after only change the
order of listeners that have the same priority. The container fails to compile
when they contradict the priorities, for example when a listener should run
before another one that has a higher priority. A listener without a
priority is placed according to its before and after options.
before and after ignore the listeners of other events and connections.
