1

好的,所以我有以下用例。在我的一些实体上,我使用文件实体,例如带有组织徽标。

现在我希望用户发布链接(然后我将异步获取文件)或文件的 base64。但是当用户执行获取时,我想呈现文件实体的 JSON 表示(还包括大小、缩略图链接等)。

我当前的设置是我的实体上有两个不同的属性,一个用于阅读,另一个用于使用不同的逻辑发布。然后是处理逻辑的事件侦听器。这一切都很好,但它会导致用户在他们的 json 文件中发布一个 postLogo 属性,我希望他们在他们的 json 文件中发布一个 logo 属性。

是否有我可以使用的注释(例如 ApiProperty 上的名称)来实现这一点,还是我需要覆盖序列化程序?

/**
 * @var File The logo of this organisation
 *
 * @ORM\ManyToOne(targetEntity="File")
 * @ApiProperty(
 *     attributes={
 *         "openapi_context"={
 *             "type"="#/components/schemas/File"
 *         }
 *     }
 * )
 * @Groups({"read"})
 */
public $logo;

/**
 * @var string The logo of this organisation, a logo can iether be posted as a valid url to that logo or a base64 reprecentation of that logo.
 *
 * @ApiProperty(
 *  attributes={
 *      "openapi_context"={
 *          "type"="url or base64"
 *      }
 *  }
 * )
 * @Groups({"write"})
 */
public $postLogo;
4

1 回答 1

1

您可以添加带有 SerializedName 注释的设置器。像这样的东西应该工作

/**
     * @Groups({"write"})
     * @SerializedName("logo")
     * 
     */
    public function setPostLogo($value)
    {
       $this->postLogo = $value;
    }
于 2019-07-10T10:19:19.447 回答