我遵循本教程的指示:http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html,並創建了一個簡單的偵聽器,用於偵聽由Doctrine在插入或更新實體時調度的事件。 preInsert和postInsert事件工作正常,並在創建新實體時分派。但是,無論如何,preUpdate和postUpdate都不會在更新實體時調用。 onFlush也是如此。作爲一個方面說明,我有一個控制檯生成的控制器,支持基本的CRUD操作,並且保持不變。在Doctrine 2上未觸發的preUpdate和postUpdate事件
下面是一些代碼片段來演示我這樣做的方式。
config.yml
annotation.listener:
class: City\AnnotatorBundle\Listener\AnnotationListener
tags:
- { name: doctrine.event_listener, event: postUpdate}
監聽器實現(我省略了其他功能,只留下postUpdate爲簡單起見)
class AnnotationListener
{
public function postUpdate(LifecycleEventArgs $args)
{
$entity=$args->getEntity();
echo $entity->getId();
die;
}
}
實體ID從不顯示,腳本繼續其執行直到完成,儘管在函數結束時死亡。
真的...但是,我必須使用其他實體和實體管理器本身以及可能的其他服務,所以它不是一個好主意。無論如何,現在看來問題已經解決了。我更新了最新版本的Symfony,清除了緩存,並且一切正常。 – tomor 2012-04-28 11:56:54
啊,是的,如果你使用其他服務/實體,它是有道理的不要這樣:) – 2012-04-28 13:04:13