diff --git a/src/Symfony/Bundle/ArgumentResolver/PayloadArgumentResolver.php b/src/Symfony/Bundle/ArgumentResolver/PayloadArgumentResolver.php index 83f0aa495c6..c8b000d1165 100644 --- a/src/Symfony/Bundle/ArgumentResolver/PayloadArgumentResolver.php +++ b/src/Symfony/Bundle/ArgumentResolver/PayloadArgumentResolver.php @@ -73,7 +73,7 @@ private function getExpectedInputClass(Request $request): ?string $context = $this->serializationContextBuilder->createFromRequest($request, false, RequestAttributesExtractor::extractAttributes($request)); - return $context['input'] ?? $context['resource_class']; + return $context['input']['class'] ?? $context['resource_class'] ?? null; } } diff --git a/tests/Symfony/Bundle/ArgumentResolver/PayloadArgumentResolverTest.php b/tests/Symfony/Bundle/ArgumentResolver/PayloadArgumentResolverTest.php index 0b099d79146..ed2ea20bfeb 100644 --- a/tests/Symfony/Bundle/ArgumentResolver/PayloadArgumentResolverTest.php +++ b/tests/Symfony/Bundle/ArgumentResolver/PayloadArgumentResolverTest.php @@ -234,7 +234,7 @@ private function createArgumentResolver(): PayloadArgumentResolver (new ApiResource())->withShortName('ResourceImplementation')->withOperations(new Operations([ 'update' => new Put(), 'update_no_deserialize' => (new Put())->withDeserialize(false), - 'update_with_dto' => (new Put())->withInput(['class' => NotResource::class]), + 'update_with_dto' => (new Put())->withInput(['class' => NotResource::class, 'name' => 'NotResource']), 'create' => new Post(), ])), ])); @@ -255,7 +255,7 @@ private function createArgumentResolver(): PayloadArgumentResolver ]; if ('update_with_dto' === $request->attributes->get('_api_operation_name')) { - $context['input'] = NotResource::class; + $context['input'] = ['class' => NotResource::class, 'name' => 'NotResource']; } else { $context['input'] = null; }