Как я могу реализовать слушатель событий объекта dotrine - PullRequest
0 голосов
/ 12 апреля 2020

Я работаю с Symfony 4.4, сначала я хочу проверить мою doctrine версию, которую я нашел: в composer:

doctrine/orm": "^2.4.5

в symfony .lock:

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

кому мне доверять?

Итак, главная проблема в том, что я пытаюсь реализовать doctrine прослушиватель сущностей, но у меня это не сработало:

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.    

1 Ответ

0 голосов
/ 13 апреля 2020

Проблема в том, что у меня был DataPersister (компонент платформы API), который запрещал удаление до этой попытки на уровне Doctrine, поэтому я подумал, что прослушиватель событий не работает. В противном случае прослушиватель событий работает, и есть много альтернатив, чтобы сделать это:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...