JMSSerializerBundle complex generated value

假装没事ソ 提交于 2019-12-07 02:35:48

问题


I need implement RESTful API for my site on symfony 2, so i use FOSRestBundle + JMSSerializerBundle

I have such serializer yml for my entity:

Acme\DemoBundle\Entity\Product:
    exclusion_policy: ALL
    accessor_order: custom
    custom_accessor_order: [id, title]
    properties:
        id:
            expose: true

        title:
            expose: true

    virtual_properties:
        getMainPhoto:
            serialized_name: photo

The problem is that getMainPhoto return me url to full sized image. I want preprocess this url before sending response to api client where i can generate new url to resized version of such image. I already have service in sf2 which can do this job:

$resized_url = $someService->generateResizedUrl($item->getMainPhoto(), 640, 480);

But i don't know how can i use this service with JMSSerializer. Maybe there is some callbacks for FOSRestBundle\JMSSerializerBundle just before it send response?


回答1:


Have a look at the documentation. There are is a number of events and/or annotations you can use to hook into the serialization process.




回答2:


You can exclude the original url, and then add the resized url using http://jmsyst.com/libs/serializer/master/event_system#serializer-post-serialize event.

You have to write a listener that listen when "Product" instances are serialized.



来源:https://stackoverflow.com/questions/14475171/jmsserializerbundle-complex-generated-value

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!