Skip to content

Commit 3831c2e

Browse files
committed
Move default query parameters into the cloned request when generating the collection results
1 parent 821fd43 commit 3831c2e

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/EventListener/Api/CollectionApiEventListener.php

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,18 @@ private function transform(Collection $object): Collection
113113
$collectionContext += $normalizationContext = $this->serializerContextBuilder->createFromRequest($request, true, $attributes);
114114
try {
115115
$uriVariables = $this->getOperationUriVariables($getCollectionOperation, $parameters, $resourceClass);
116-
$this->parameterProvider->provide($getCollectionOperation, $uriVariables, [ ...$collectionContext, 'request' => clone $request, 'uri_variables' => $uriVariables ]);
116+
$clonedRequest = clone $request;
117+
if ($defaultQueryParams) {
118+
foreach ($defaultQueryParams as $key => $defaultQueryParam) {
119+
if (!$clonedRequest->query->has($key)) {
120+
$clonedRequest->query->set($key, $defaultQueryParam);
121+
}
122+
}
123+
$clonedRequest->attributes->set('_api_query_parameters', $clonedRequest->query->all());
124+
}
125+
$this->parameterProvider->provide($getCollectionOperation, $uriVariables, [ ...$collectionContext, 'request' => $clonedRequest, 'uri_variables' => $uriVariables ]);
117126
// Operation $operation, array $uriVariables = [], array $context = []
118-
$collectionData = $this->provider->provide($getCollectionOperation, $uriVariables, [ ...$collectionContext, 'request' => $request, 'uri_variables' => $uriVariables ]);
127+
$collectionData = $this->provider->provide($getCollectionOperation, $uriVariables, $collectionContext);
119128
} catch (InvalidIdentifierException $e) {
120129
throw new NotFoundHttpException('Invalid identifier value or configuration.', $e);
121130
}

0 commit comments

Comments
 (0)