如何公开方法或类似的替代方案

问题描述 投票:1回答:1

作为一个简单的例子,我有一个带有以下字段的学说实体

id
name
description

我正在使用JMSSerializerBundle并且它在大多数情况下运行良好,但是如果我想让序列化数据(Json)包含一些未完全映射到我的实体的内容。

例如,如果我只想要返回描述的前50个字符,我想称之为short_description

我尝试使用@Expose的排除策略来公开方法,但这不受支持。

我需要频繁地做这种事情并且有许多不同的实体,我想知道是否有人可以建议一个很好的清洁方法。

我已经阅读了JMSSerializerBundle的整个文档,并在互联网上寻找解决方案,我可以想出一些解决方案,但结果代码看起来有点脏。

rest symfony jms jmsserializerbundle
1个回答
3
投票

注释@VirtualProperty是你正在寻找的(http://jmsyst.com/libs/serializer/master/reference/annotations#virtualproperty)。

例如:

namespace Some\Bundle\Entity;

use JMS\Serializer\Annotation\VirtualProperty;
use JMS\Serializer\Annotation\SerializedName;

class MyEntity
{
     private $description;

     /**
      * @VirtualProperty
      * @SerializedName("short_description")
      */
     public function getShortDescription()
     {
         return substr($this->description, 0, 50);
     }
}
© www.soinside.com 2019 - 2024. All rights reserved.