首先,这个页面中几乎没有提到实体监听器:
https://symfony.com/doc/current/doctrine/event_listeners_subscribers.html
在Doctrine 2.4中,引入了一个名为Entity Listeners的功能。它 是一个用于实体的生命周期监听器类。你可以阅读 它在Doctrine Documentation中。
然后在这里解释说,我只需添加一个带有正确标签的服务,并且在使用doctrine 2.5(我这样做)时我不必在实体中注册监听器:
https://symfony.com/doc/master/bundles/DoctrineBundle/entity-listeners.html
如果您使用doctrine / orm<版本2.5你必须注册 您实体中的实体监听器:
但是在学说页面上没有提到后者:
然而,在学说页面之后,我还添加了我的实体yaml:
AppBundle\Entity\File:
type: entity
entityListeners:
AppBundle\EventListener\FileListener:
postRemove: [postRemove]
这是我的听众课程(仍在测试中):
class FileListener {
public function postRemove(File $file) {
dump($file); die();
}
}
这就是我在service.yml中设置的内容:
file_listener:
class: AppBundle\EventListener\FileListener
arguments: ['%path_image%', '%path_thumb%', '%path_preview%']
tags:
- { name: doctrine.orm.entity_listener }
- { name: doctrine.orm.entity_listener, entity_manager: custom }
但是在删除文件实体时,不会调用监听器方法。