好的,所以我有以下用例。在某些实体上,我使用带有组织徽标的文件实体。
现在,我希望用户发布一个链接(然后我将异步获取文件)或该文件的base64。但是,当用户执行get操作时,我想呈现文件实体的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;
答案 0 :(得分:0)
您可以添加带有SerializedName批注的设置器。这样的事情应该起作用
/**
* @Groups({"write"})
* @SerializedName("logo")
*
*/
public function setPostLogo($value)
{
$this->postLogo = $value;
}