diff --git a/src/State/Provider/ObjectMapperProvider.php b/src/State/Provider/ObjectMapperProvider.php index bc21057146..406d5597b2 100644 --- a/src/State/Provider/ObjectMapperProvider.php +++ b/src/State/Provider/ObjectMapperProvider.php @@ -39,6 +39,7 @@ public function __construct( public function provide(Operation $operation, array $uriVariables = [], array $context = []): object|array|null { $data = $this->decorated->provide($operation, $uriVariables, $context); + $class = $operation->getOutput()['class'] ?? $operation->getClass(); if (!$this->objectMapper || !$operation->canMap()) { return $data; @@ -55,7 +56,7 @@ public function provide(Operation $operation, array $uriVariables = [], array $c $data = new MappedObjectPaginator( iterator_to_array($data), $this->objectMapper, - $operation->getClass(), + $class, $data->getTotalItems(), $data->getCurrentPage(), $data->getLastPage(), @@ -64,11 +65,11 @@ public function provide(Operation $operation, array $uriVariables = [], array $c } elseif (\is_array($data)) { foreach ($data as &$v) { if (\is_object($v)) { - $v = $this->objectMapper->map($v, $operation->getClass()); + $v = $this->objectMapper->map($v, $class); } } } else { - $data = $this->objectMapper->map($data, $operation->getClass()); + $data = $this->objectMapper->map($data, $class); } $request?->attributes->set('data', $data);