From de9f641f3dd474456267f912550586e21c5bc603 Mon Sep 17 00:00:00 2001 From: Vincent Langlet Date: Mon, 9 Mar 2026 21:14:20 +0100 Subject: [PATCH 1/2] fix(filter): Do not nest array --- src/Doctrine/Common/Filter/OpenApiFilterTrait.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Doctrine/Common/Filter/OpenApiFilterTrait.php b/src/Doctrine/Common/Filter/OpenApiFilterTrait.php index 2ff8b608e19..87ba6ef5d32 100644 --- a/src/Doctrine/Common/Filter/OpenApiFilterTrait.php +++ b/src/Doctrine/Common/Filter/OpenApiFilterTrait.php @@ -28,7 +28,11 @@ public function getOpenApiParameters(Parameter $parameter): OpenApiParameter|arr return new OpenApiParameter(name: $parameter->getKey(), in: 'query'); } - $arraySchema = ['type' => 'array', 'items' => $schema ?? ['type' => 'string']]; + if ('array' === ($schema['type'] ?? null)) { + $arraySchema = $schema; + } else { + $arraySchema = ['type' => 'array', 'items' => $schema ?? ['type' => 'string']]; + } return new OpenApiParameter(name: $parameter->getKey().'[]', in: 'query', style: 'deepObject', explode: true, schema: $arraySchema); } From 64eb25aeb3ddf3c5b741e056f8095ecab6913ac8 Mon Sep 17 00:00:00 2001 From: Vincent Langlet Date: Mon, 9 Mar 2026 22:06:39 +0100 Subject: [PATCH 2/2] Add test --- .../TestBundle/Entity/ProductWithQueryParameter.php | 5 +++++ tests/Functional/Parameters/DoctrineTest.php | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/tests/Fixtures/TestBundle/Entity/ProductWithQueryParameter.php b/tests/Fixtures/TestBundle/Entity/ProductWithQueryParameter.php index cd0c9fdc52c..f3eee943714 100644 --- a/tests/Fixtures/TestBundle/Entity/ProductWithQueryParameter.php +++ b/tests/Fixtures/TestBundle/Entity/ProductWithQueryParameter.php @@ -61,6 +61,11 @@ property: 'tags', schema: ['anyOf' => [['type' => 'array', 'items' => ['type' => 'string']], ['type' => 'string']]] ), + 'listOfTags' => new QueryParameter( + filter: new ExactFilter(), + property: 'tags', + schema: ['type' => 'array', 'items' => ['type' => 'string']], + ), ] ), ] diff --git a/tests/Functional/Parameters/DoctrineTest.php b/tests/Functional/Parameters/DoctrineTest.php index 56b4bdbb1e0..8fe301f5237 100644 --- a/tests/Functional/Parameters/DoctrineTest.php +++ b/tests/Functional/Parameters/DoctrineTest.php @@ -430,6 +430,14 @@ public static function openApiParameterDocumentationProvider(): array 'expectedDescription' => '', 'expectedSchema' => ['type' => 'array', 'items' => ['anyOf' => [['type' => 'array', 'items' => ['type' => 'string']], ['type' => 'string']]]], ], + 'with schema and default castToArray should not wrap schema in array type if already an array' => [ + 'parameterName' => 'listOfTags', + 'shouldHaveArrayNotation' => true, + 'expectedStyle' => 'deepObject', + 'expectedExplode' => true, + 'expectedDescription' => '', + 'expectedSchema' => ['type' => 'array', 'items' => ['type' => 'string']], + ], ]; } }