第一次接触symphony,有自定义类FavoriteItemDto
有结构
public function __construct(
#[Groups(["delete"])]
#[Assert\NotBlank(groups: ['create', 'delete'])]
public readonly ?int $itemId = null,
#[Groups(["delete"])]
#[Assert\NotBlank(groups: ['create', 'delete'])]
#[Assert\Choice(callback: [Subsystem::class, 'values'], groups: ['create'])]
public readonly ?string $subsystem = null,
#[Assert\Type(type: 'integer', groups: ['create'])]
public readonly ?int $eventTypeId = null,
#[AssertType(type: 'array', groups: ['create'],)]
public readonly ?array $itemIds = null,
) {
}
变量 itemIds 出现问题,代码可以工作,但是当尝试输入 swagger (/v1/account/doc) 时,会出现错误
{"errors":[{"errorCode":500,"errorCause":"Property \u0022App\Model\FavouriteItemDto::itemIds\u0022 是一个数组,但其项目类型未指定。您可以通过使用来指定例如类型
string[]
或 @OA\\Property(type=\u0022array\u0022, @OA\\Items(type=\u0022string\u0022))
。"}]}
如果我理解正确的话,那么你需要显式指定数组元素的类型,但我不明白如何,解释一下,请帮忙..
我看了文档,什么都不懂,我研究了所有类似的问题,也不懂,请像猫一样戳我的脸......
看起来像是序列化问题。 尝试像这样定义你的数组:
#[ApiProperty(
description: "List of item IDs",
items: new \ApiPlatform\Metadata\PropertySchema(['type' => 'integer']),
openapiContext: ['type' => 'array', 'items' => ['type' => 'integer']]
)]
#[Assert\Type(type: 'array', groups: ['create'])]
public readonly ?array $itemIds = null,
别忘了打电话:
use ApiPlatform\Metadata\ApiProperty;