symfony

时间:2017-04-12 19:40:26

标签: symfony doctrine

当我尝试在symfony中设置带有注入参数的学说实体监听器时,我有点困惑。

首先,这个页面中几乎没有提到实体监听器:

  

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你必须注册   您实体中的实体监听器:

但是在学说页面上没有提到后者:

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#entity-listeners

然而,在学说页面之后,我还添加了我的实体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 }

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

0 个答案:

没有答案