symfony中的实体侦听器

symfony中的实体侦听器,symfony,doctrine,Symfony,Doctrine,当我试图用symfony中的注入参数设置一个条令实体侦听器时,我有点困惑 首先,本页很少提到实体侦听器: 在原则2.4中,引入了一种称为实体侦听器的功能。信息技术 是用于实体的生命周期侦听器类。你可以读到 它在条令文件中 然后在这里解释,我只需要添加一个具有正确标记的服务,并且在使用doctrine 2.5时,我不必在实体中注册侦听器(我这样做): 如果您使用的是doctrine/orm

当我试图用symfony中的注入参数设置一个条令实体侦听器时,我有点困惑

首先,本页很少提到实体侦听器:

在原则2.4中,引入了一种称为实体侦听器的功能。信息技术 是用于实体的生命周期侦听器类。你可以读到 它在条令文件中

然后在这里解释,我只需要添加一个具有正确标记的服务,并且在使用doctrine 2.5时,我不必在实体中注册侦听器(我这样做):

如果您使用的是doctrine/orm<2.5的版本,则必须注册 实体中的实体侦听器:

但在原则页面上未提及后者:

然而,在原则页面之后,我还向我的实体yaml添加了:

AppBundle\Entity\File:
    type: entity
    entityListeners:
        AppBundle\EventListener\FileListener:
            postRemove: [postRemove]
这就是我的Listener类(仍用于测试):

这就是我在服务中设置的。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 }

但是删除文件实体时,不会调用侦听器方法。

。这是官方文件:这也是我链接的内容。但我刚刚找到了解决方案:它只是简单地工作,但只有当我直接删除实体时才起作用。在此之前,我总是删除
oneToMany
的反转面,并通过删除级联删除文件实体。不幸的是,在这种情况下,事件似乎没有被触发。您是否有可能使用了
onDelete=“CASCADE”
?是的,这就是我刚才说的,不是吗?1。别自命不凡。2.请仔细阅读为什么不应在此类情况下使用
onDelete=“CASCADE”
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 }