我将Symfony2与JMSSerializerBundle结合使用。最后一个是我新来的=)在这种情况下我该怎么办:
我有图像模型。它包含一些字段,但主要是“名称”。此外,我也有一些模型,这对图像模型有借鉴意义。例如,用户和应用程序。用户模型有OneToOne字段"avatar",应用程序有OneToOne字段“图标”。现在,我想序列化用户实例,并获得以下内容
{
...,
"avatar": "http://example.com/my/image/path/image_name.png",
....
}此外,我还想序列化应用程序,并获得
{
...,
"icon": "http://example.com/my/image/path/another_image_name.png",
...
}我在用户::avatar和Application::图标字段上使用@Inline注释,将Image (与此字段相关)简化为单个标量值(只需要图像“名称”)。此外,我的图像模型有ExclusionPolicy("all"),并且只公开"name“字段。现在,JMSSerializer输出是
(For User instance)
{
...,
"name": "http://example.com/my/image/path/image_name.png",
...
}
(For Application instance)
{
...,
"name": "http://example.com/my/image/path/another_image_name.png",
...
}问题是:如何使JMSSerializer在序列化数组中保留"avatar“和”图标“键而不是"name"?
发布于 2015-08-29 06:08:02
最后,我找到了解决办法。在我看来,这不是很优雅和美丽,但它的工作。
@Type("Image")。
//src\AppBundle\Entity\User.php //. /** * @var整型**/*** @ORM\JoinColumn(name="avatar",referencedColumnName="id") **@JMS\暴露()*@JMS\Type(“图像”) */ $avatar;//. //src\AppBundle\Entity\Application.php //. /** * @var整型**/***@ORM\JoinColumn(name=“图标”,referencedColumnName="id") * @JMS\Expose() *@JMS\Type(“图像”) */ $icon;//.Image类型的对象序列化为json。request服务,以在我的处理程序中生成到图像的完整web路径。
app.image_type_handler:类:AppBundle\序列化器\ImageTypeHandler参数:“@请求”作用域:请求标记:-{ name: jms_serializer.subscribing_handler }此外,您还可以使用这解决方案来修改post_serialize事件中的序列化数据。
https://stackoverflow.com/questions/32225210
复制相似问题