symfony / validator 6.3 和 swagger ,类型数组

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

第一次接触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))
。"}]}

如果我理解正确的话,那么你需要显式指定数组元素的类型,但我不明白如何,解释一下,请帮忙..

我看了文档,什么都不懂,我研究了所有类似的问题,也不懂,请像猫一样戳我的脸......

php arrays symfony validation swagger
1个回答
0
投票

看起来像是序列化问题。 尝试像这样定义你的数组:

    #[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;
© www.soinside.com 2019 - 2024. All rights reserved.