Skip to content

Commit 978dd32

Browse files
committed
fixes
1 parent c51ee6f commit 978dd32

File tree

3 files changed

+9
-8
lines changed

3 files changed

+9
-8
lines changed

src/Doctrine/Common/State/PersistProcessor.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public function process(mixed $data, Operation $operation, array $uriVariables =
5656
\assert(method_exists($manager, 'getReference'));
5757
// TODO: the call to getReference is most likely to fail with complex identifiers
5858
$newData = $data;
59-
if ($previousData = $request?->attributes->get('previous_data')) {
59+
if ($previousData = $context['previous_data'] ?? $request?->attributes->get('previous_data')) {
6060
$newData = 1 === \count($uriVariables) ? $manager->getReference($class, current($uriVariables)) : clone $previousData;
6161
}
6262

src/Hydra/EventListener/AddLinkHeaderListener.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,10 @@ public function onKernelResponse(ResponseEvent $event): void
4646

4747
$apiDocUrl = $this->urlGenerator->generate('api_doc', ['_format' => 'jsonld'], UrlGeneratorInterface::ABS_URL);
4848
$link = new Link(ContextBuilder::HYDRA_NS.'apiDocumentation', $apiDocUrl);
49+
$linkProvider = $request->attributes->get('_links') ?? new GenericLinkProvider();
4950

50-
if (null === $linkProvider = $request->attributes->get('_links')) {
51-
$request->attributes->set('_links', new GenericLinkProvider([$link]));
52-
53-
return;
51+
if (!\in_array($link, $linkProvider->getLinks(), true)) {
52+
$request->attributes->set('_links', $linkProvider->withLink($link));
5453
}
55-
$request->attributes->set('_links', $linkProvider->withLink($link));
5654
}
5755
}

src/Symfony/Bundle/SwaggerUi/SwaggerUiAction.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,14 @@ public function __invoke(Request $request): Response
8282
'extraConfiguration' => $this->swaggerUiContext->getExtraConfiguration(),
8383
];
8484

85-
if ($request->isMethodSafe() && null !== $resourceClass = $request->attributes->get('_api_resource_class')) {
85+
$originalRouteParams = $request->attributes->get('_api_original_route_params') ?? [];
86+
$resourceClass = $originalRouteParams['_api_resource_class'] ?? $request->attributes->get('_api_resource_class');
87+
88+
if ($request->isMethodSafe() && $resourceClass) {
8689
$swaggerData['id'] = $request->attributes->get('id');
8790
$swaggerData['queryParameters'] = $request->query->all();
8891

89-
$metadata = $this->resourceMetadataFactory->create($resourceClass)->getOperation($request->attributes->get('_api_operation_name'));
92+
$metadata = $this->resourceMetadataFactory->create($resourceClass)->getOperation($originalRouteParams['_api_operation_name'] ?? $request->attributes->get('_api_operation_name'));
9093

9194
$swaggerData['shortName'] = $metadata->getShortName();
9295
$swaggerData['operationId'] = $this->normalizeOperationName($metadata->getName());

0 commit comments

Comments
 (0)