Как получить доступ к сохраненной сущности в слушателе? - PullRequest
0 голосов
/ 04 мая 2018

Я работаю над проектом, основанным на Symfony 2. Я зарегистрировал слушателя так:

services:
    app.video_release_listener:
        class: CmsBundle\EventListener\Video\VideoReleaseListener
        tags:
            - { name: doctrine.event_listener, event: postPersist }

... и мой класс слушателя выглядит так:

namespace CmsBundle\EventListener\Video;

use Doctrine\ORM\Event\LifecycleEventArgs;
use AppBundle\Entity\Video;

class VideoReleaseListener
{
    public function postPersist(LifecycleEventArgs $args){
        $entity = $args->getEntity();
        die(get_class($entity));
    }
}

... который я надеялся выложить имя класса моего видео объекта, когда я сохранил видео. Вместо этого он выплевывает Gedmo\Loggable\Entity\LogEntry - не то, что я хочу.

Как мне получить доступ к моему видео-объекту из слушателя?

====

Edit: я также попытался поставить условную проверку класса вокруг моего оператора die(), чтобы увидеть, возможно, была ли другая итерация с другим объектом. Второй итерации не происходит.

1 Ответ

0 голосов
/ 04 мая 2018

Я не совсем исправил проблему, как описано, но я обошел ее, добавив тег @ORM\EntityListeners в свой класс video следующим образом:

/**
 * @ORM\EntityListeners({"CmsBundle\EventListener\Video\VideoReleaseListener"})
*/

... и затем переключаю имя моего метода VideoReleaseListener на postUpdate(). (По какой-то причине он отказался работать как postPersist().)

Во всяком случае, это очень странное поведение, но, возможно, это кому-то поможет.

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