События JMSSerializer не работают для конкретных типов
Я пытаюсь создать EventSubscriber
для различных событий сериализации, используя Symfony 3.4.21
, JMSSerializer 2.1.0
а также JMSSerializerBundle 3.0.0
,
Проблема в том, что подписчики работают, только если они не зарегистрированы для конкретного типа. Почему это?
Моя настройка:
// src/AppBundle\EventListener\SerializationEventSubscriber.php
use JMS\Serializer\EventDispatcher\Events;
use JMS\Serializer\EventDispatcher\EventSubscriberInterface;
use JMS\Serializer\EventDispatcher\PreSerializeEvent;
use JMS\Serializer\EventDispatcher\ObjectEvent;
class SerializationEventSubscriber implements EventSubscriberInterface {
public static function getSubscribedEvents() {
return array(
// Subscribe with NO specific class
array('event' => Events::PRE_SERIALIZE, 'method' => 'onPreSerialize_NoClass'),
array('event' => Events::POST_DESERIALIZE, 'method' => 'onPostDeserialize_NoClass'),
// Subscribe WITH specific class
array('event' => Events::PRE_SERIALIZE, 'method' => 'onPreSerialize_Class', 'class' => 'AppBundle\Entity\MyEntity'),
array('event' => Events::POST_DESERIALIZE, 'method' => 'onPostDeserialize_Class', 'class' => 'AppBundle\Entity\MyEntity'),
);
}
public function onPreSerialize_NoClass(PreSerializeEvent $event) {
// log...
}
public function onPostDeserialize_NoClass(PreSerializeEvent $event) {
// log...
}
public function onPreSerialize_Class(PreSerializeEvent $event) {
// log...
}
public function onPreSerialize_Class(PreSerializeEvent $event) {
// log...
}
}
// app/config/services.yml
AppBundle\EventListener\SerializationEventSubscriber:
tags:
- { name: "jms_serializer.event_subscriber" }
Хотя первые два обработчика (определенные без определенного класса) вызываются правильно, эти два обработчика с определенным классом не вызываются.
Если я проверю класс объекта события в ..._NoClass
обработчики, он идеально соответствует типу, используемому в ..._Class
обработчики.
Согласно документам, не должно быть проблем с определением обработчика для определенного класса. Что не так с моим конфигом?
1 ответ
Похоже, это была ошибка в JMSSerializerBundle 3.0.0
, Обновление до 3.1.0
решил проблему.