好的,所以我有以下用例。在我的一些实体上,我使用文件实体,例如带有组织徽标。
现在我希望用户发布链接(然后我将异步获取文件)或文件的 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;