Add extra fields using JMS Serializer bundle

后端 未结 6 1395
说谎
说谎 2020-12-13 04:03

I\'ve an entity I usually serialize using the JMS Serializer bundle. I have to add to the serialization some fields that doesn\'t reside in the entity itself but are gathere

6条回答
  •  南方客
    南方客 (楼主)
    2020-12-13 04:35

    addData is deprecated so since 2.0.0, so we need to do it like this:

    use JMS\Serializer\EventDispatcher\ObjectEvent;
    
    class MySerializerHandler {
    
        public function onPostSerialize(ObjectEvent $event)
        {
            /** @var MySpecialObjectType $object */
            $myObject = $event->getObject();
    
            $key = 'customDataKey';
            $value = 'myvalue';
    
            $event->getVisitor()->visitProperty(
                new StaticPropertyMetadata('', $key, $value),
                $value
            );
        }
    }
    

    services.yaml

    services:
        MySerializerHandler:
            tags:
              - { name: jms_serializer.event_listener, class: 'MySpecialObjectType', event: serializer.post_serialize, method: 'onPostSerialize' }
    

    https://github.com/schmittjoh/serializer/blob/c9c82c841b8ebe682ca44972d64fded215f72974/UPGRADING.md#from-1130-to-200

提交回复
热议问题