JMSSerializer 事件不适用于具体类型

JMSSerializer events do not work for concrete types

我正在尝试使用 Symfony 3.4.21JMSSerializer 2.1.0JMSSerializerBundle 3.0.0.

为不同的序列化事件创建 EventSubscriber

问题是,订阅者只有在没有注册具体类型的情况下才能工作。 这是为什么?

我的设置:

// 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" }  

虽然前两个处理程序(没有特定 class 定义)被正确调用,但具有特定 class 的两个处理程序未被调用

如果我检查 ..._NoClass 处理程序中事件对象的 class,它与 ..._Class 处理程序中使用的类型完全匹配。

根据 docs 定义特定 class 的处理程序应该没有问题。 我的配置有什么问题?

这似乎是 JMSSerializerBundle 3.0.0 中的错误。 3.1.0 的更新解决了这个问题。