Я нашел способ, но он противный.
Вот что я делаю в своем загрузчике:
$em = $this->container->get('doctrine.orm.default_entity_manager');
$entitiesWithListeners = [
Post::class,
Comment::class
];
$listenersToDisable = [
MyListener::class
];
foreach ($entitiesWithListeners as $entity) {
$metadata = $em->getMetadataFactory()->getMetadataFor($entity);
foreach ($metadata->entityListeners as $event => $listeners) {
foreach ($listeners as $key => $listener) {
if (in_array($listener['class'], $listenersToDisable)) {
unset($listeners[$key]);
}
}
$metadata->entityListeners[$event] = $listeners;
}
$em->getMetadataFactory()->setMetadataFor($entity, $metadata);
}
Я просто получаю метаданные для каждой сущности, отбрасываю их из своих прослушивателей сущностей иустановите его обратно в соответствующий класс.
Это уродливо, но эй, это работает.Поскольку на данный момент я застрял с AliceBundle v1.4, и мне придется все изменить, когда мы обновим проект, это подойдет.