From 6cb6576f0b24f98872c8f9e36c3a4568b6b478bb Mon Sep 17 00:00:00 2001 From: soyuka Date: Fri, 14 Nov 2025 10:43:33 +0100 Subject: [PATCH 1/2] fix(state): keep entity data and read map on the input --- src/State/Processor/ObjectMapperProcessor.php | 2 +- src/State/Provider/ObjectMapperProvider.php | 4 +++- src/Symfony/Controller/MainController.php | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/State/Processor/ObjectMapperProcessor.php b/src/State/Processor/ObjectMapperProcessor.php index e0f62ba7693..fcf6c4527f4 100644 --- a/src/State/Processor/ObjectMapperProcessor.php +++ b/src/State/Processor/ObjectMapperProcessor.php @@ -55,7 +55,7 @@ public function process(mixed $data, Operation $operation, array $uriVariables = if (!$this->objectMapperMetadata->create($data)) { return $this->decorated->process($data, $operation, $uriVariables, $context); } - } elseif (!(new \ReflectionClass($operation->getClass()))->getAttributes(Map::class)) { + } elseif (!(new \ReflectionClass($class))->getAttributes(Map::class)) { return $this->decorated->process($data, $operation, $uriVariables, $context); } diff --git a/src/State/Provider/ObjectMapperProvider.php b/src/State/Provider/ObjectMapperProvider.php index 7f8dfae60a9..daa111d0f79 100644 --- a/src/State/Provider/ObjectMapperProvider.php +++ b/src/State/Provider/ObjectMapperProvider.php @@ -49,11 +49,13 @@ public function provide(Operation $operation, array $uriVariables = [], array $c { $data = $this->decorated->provide($operation, $uriVariables, $context); + $request = $context['request'] ?? null; + $request?->attributes->set('entity_data', $data); + if (!$this->objectMapper || !\is_object($data)) { return $data; } - $request = $context['request'] ?? null; $entityClass = null; if (($options = $operation->getStateOptions()) && $options instanceof Options && $options->getEntityClass()) { $entityClass = $options->getEntityClass(); diff --git a/src/Symfony/Controller/MainController.php b/src/Symfony/Controller/MainController.php index 508c9f072d6..4078b9c0bed 100644 --- a/src/Symfony/Controller/MainController.php +++ b/src/Symfony/Controller/MainController.php @@ -112,6 +112,7 @@ public function __invoke(Request $request): Response $context['previous_data'] = $request->attributes->get('previous_data'); $context['data'] = $request->attributes->get('data'); $context['read_data'] = $request->attributes->get('read_data'); + $context['entity_data'] = $request->attributes->get('entity_data'); if (null === $operation->canWrite()) { $operation = $operation->withWrite(!$request->isMethodSafe()); From d13f2b8d26aaf6746422c3a250dca0cfa1ab1ea7 Mon Sep 17 00:00:00 2001 From: soyuka Date: Fri, 14 Nov 2025 14:18:03 +0100 Subject: [PATCH 2/2] patch entity data --- src/State/Processor/ObjectMapperProcessor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/State/Processor/ObjectMapperProcessor.php b/src/State/Processor/ObjectMapperProcessor.php index fcf6c4527f4..033f0459f9c 100644 --- a/src/State/Processor/ObjectMapperProcessor.php +++ b/src/State/Processor/ObjectMapperProcessor.php @@ -64,7 +64,7 @@ public function process(mixed $data, Operation $operation, array $uriVariables = // persist the entity $this->decorated->process( // maps the Resource to an Entity - $this->objectMapper->map($data), + $this->objectMapper->map($data, $context['request']?->attributes->get('entity_data')), $operation, $uriVariables, $context,