我如何实现一个 dotrine 实体事件监听器

How can I implement a dotrine entity event listener

我正在使用 Symfony 4.4,起初我想检查我找到的学说版本: 在作曲家中:

doctrine/orm": "^2.4.5

在symfony.lock中:

"doctrine/orm": {
    "version": "v2.7.0"
},

我必须信任哪一个?

所以主要问题是我正在尝试实现一个学说实体侦听器,但它对我不起作用:

App\Entity\Admin:

/**
 * @ORM\Entity(repositoryClass="App\Repository\AdminRepository")
 *
 * @ORM\EntityListeners({"AdminListener"})
 */
 class Admin implements UserInterface

services.yaml:

admin_listener:
    class: App\EventListener\Doctrine\AdminListener
    tags:
        -
            name: doctrine.orm.entity_listener
            event: preRemove
            entity: App\Entity\Admin
            method: preRemove
            connection: 'default'

App\EventListener\Doctrine\AdminListener:

namespace App\EventListener\Doctrine;
use Doctrine\Persistence\Event\LifecycleEventArgs;

class AdminListener
{
    public function preRemove(Admin $admin, LifecycleEventArgs $event)
    {
        dump($admin);
        dd($event);
    }

}

控制台:

>bin/console debug:event-dispatcher doctrine.orm.entity_listener
#output:                                                                        
 [WARNING] The event "doctrine.orm.entity_listener" does not have any     
           registered listeners.    

问题是我有一个 DataPersister(API 平台组件)在尝试 Doctrine 级别之前不允许删除,因此我认为事件侦听器无法正常工作。 否则,事件侦听器正在工作并且有很多替代方法:

https://symfony.com/doc/4.4/doctrine/events.html