我正在开发一个基于Symfony 2的项目。我已经注册了一个听众:
services:
app.video_release_listener:
class: CmsBundle\EventListener\Video\VideoReleaseListener
tags:
- { name: doctrine.event_listener, event: postPersist }
...我的听众课程看起来像这样:
namespace CmsBundle\EventListener\Video;
use Doctrine\ORM\Event\LifecycleEventArgs;
use AppBundle\Entity\Video;
class VideoReleaseListener
{
public function postPersist(LifecycleEventArgs $args){
$entity = $args->getEntity();
die(get_class($entity));
}
}
...当我保存视频时,我曾希望将我的视频实体的类名吐出来。相反,它吐出Gedmo\Loggable\Entity\LogEntry
- 不是我想要的。
如何从监听器中访问我的视频实体?
====
编辑:我还尝试在我的die()
语句周围对类进行条件检查,以查看是否可能有另一个具有不同对象的迭代。没有第二次迭代。
答案 0 :(得分:0)
我没有按照描述完全解决问题,但我通过在@ORM\EntityListeners
类上添加video
标记来解决这个问题,如下所示:
/**
* @ORM\EntityListeners({"CmsBundle\EventListener\Video\VideoReleaseListener"})
*/
...然后将我的VideoReleaseListener方法名称切换为postUpdate()
。 (出于某种原因,它拒绝以postPersist()
身份工作。)
无论如何,这是非常不稳定的行为,但也许这有助于某人。