在Symfony2 / Doctrine中,记录插入后触发事件的最佳方式是什么?
首先,将一个服务注册为Doctrine事件监听器:
app/config.yml
:
services:
foo.listener:
class: Vendor\FooBundle\BarClass
tags:
- { name: doctrine.event_listener, event: postPersist, method: onPostPersist }
然后在您的监听器类中,定义一个onPostPersist
方法(或者在配置中命名的任何方法),该方法接受一个Doctrine\ORM\Event\LifecycleEventArgs
参数:
public function onPostPersist(LifecycleEventArgs $eventArgs)
{
// do stuff with the entity here
}
<service id="foo.listener" class="%foo.listener.class%">
<argument type="service" id="service_container"/>
<tag name="doctrine.event_listener" event="postPersist" method="fooMethod" />
</service>