From 3831c2e3b542993d1d2234c20211151096abee28 Mon Sep 17 00:00:00 2001 From: silverbackdan Date: Wed, 24 Sep 2025 02:36:36 +0100 Subject: [PATCH] Move default query parameters into the cloned request when generating the collection results --- .../Api/CollectionApiEventListener.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/EventListener/Api/CollectionApiEventListener.php b/src/EventListener/Api/CollectionApiEventListener.php index 629effb9..0eb40e89 100644 --- a/src/EventListener/Api/CollectionApiEventListener.php +++ b/src/EventListener/Api/CollectionApiEventListener.php @@ -113,9 +113,18 @@ private function transform(Collection $object): Collection $collectionContext += $normalizationContext = $this->serializerContextBuilder->createFromRequest($request, true, $attributes); try { $uriVariables = $this->getOperationUriVariables($getCollectionOperation, $parameters, $resourceClass); - $this->parameterProvider->provide($getCollectionOperation, $uriVariables, [ ...$collectionContext, 'request' => clone $request, 'uri_variables' => $uriVariables ]); + $clonedRequest = clone $request; + if ($defaultQueryParams) { + foreach ($defaultQueryParams as $key => $defaultQueryParam) { + if (!$clonedRequest->query->has($key)) { + $clonedRequest->query->set($key, $defaultQueryParam); + } + } + $clonedRequest->attributes->set('_api_query_parameters', $clonedRequest->query->all()); + } + $this->parameterProvider->provide($getCollectionOperation, $uriVariables, [ ...$collectionContext, 'request' => $clonedRequest, 'uri_variables' => $uriVariables ]); // Operation $operation, array $uriVariables = [], array $context = [] - $collectionData = $this->provider->provide($getCollectionOperation, $uriVariables, [ ...$collectionContext, 'request' => $request, 'uri_variables' => $uriVariables ]); + $collectionData = $this->provider->provide($getCollectionOperation, $uriVariables, $collectionContext); } catch (InvalidIdentifierException $e) { throw new NotFoundHttpException('Invalid identifier value or configuration.', $e); }