|
23 | 23 | use ApiPlatform\Metadata\Parameter; |
24 | 24 | use ApiPlatform\Metadata\ParameterProviderFilterInterface; |
25 | 25 | use ApiPlatform\Metadata\Parameters; |
| 26 | +use ApiPlatform\Metadata\PropertiesAwareInterface; |
26 | 27 | use ApiPlatform\Metadata\Property\Factory\PropertyMetadataFactoryInterface; |
27 | 28 | use ApiPlatform\Metadata\Property\Factory\PropertyNameCollectionFactoryInterface; |
28 | 29 | use ApiPlatform\Metadata\Resource\ResourceMetadataCollection; |
@@ -173,6 +174,10 @@ private function getDefaultParameters(Operation $operation, string $resourceClas |
173 | 174 |
|
174 | 175 | ['propertyNames' => $propertyNames, 'properties' => $properties] = $this->getProperties($resourceClass, $parameter); |
175 | 176 |
|
| 177 | + if ($filter instanceof PropertiesAwareInterface) { |
| 178 | + $parameter = $parameter->withProperties($propertyNames); |
| 179 | + } |
| 180 | + |
176 | 181 | $parameter = $this->setDefaults($key, $parameter, $filter, $properties, $operation); |
177 | 182 | // We don't do any type cast yet, a query parameter or an header is always a string or a list of strings |
178 | 183 | if (null === $parameter->getNativeType()) { |
@@ -250,17 +255,17 @@ private function setDefaults(string $key, Parameter $parameter, ?object $filter, |
250 | 255 | $parameter = $parameter->withProperty($key); |
251 | 256 | } |
252 | 257 |
|
253 | | - if (null === $parameter->getProperty() && $this->nameConverter && ($nameConvertedKey = $this->nameConverter->normalize($key)) && isset($properties[$nameConvertedKey])) { |
254 | | - $parameter = $parameter->withProperty($key)->withExtraProperties(['_query_property' => $nameConvertedKey] + $parameter->getExtraProperties()); |
255 | | - $currentKey = $nameConvertedKey; |
256 | | - } |
| 258 | + // if (null === $parameter->getProperty() && $this->nameConverter && ($nameConvertedKey = $this->nameConverter->normalize($key)) && isset($properties[$nameConvertedKey])) { |
| 259 | + // $parameter = $parameter->withProperty($key)->withExtraProperties(['_query_property' => $nameConvertedKey] + $parameter->getExtraProperties()); |
| 260 | + // $currentKey = $nameConvertedKey; |
| 261 | + // } |
257 | 262 |
|
258 | 263 | if ($this->nameConverter && $property = $parameter->getProperty()) { |
259 | 264 | $parameter = $parameter->withProperty($this->nameConverter->normalize($property)); |
260 | 265 | } |
261 | 266 |
|
262 | 267 | if (isset($properties[$currentKey]) && ($eloquentRelation = ($properties[$currentKey]->getExtraProperties()['eloquent_relation'] ?? null)) && isset($eloquentRelation['foreign_key'])) { |
263 | | - $parameter = $parameter->withExtraProperties(['_query_property' => $eloquentRelation['foreign_key']] + $parameter->getExtraProperties()); |
| 268 | + $parameter = $parameter->withProperty($eloquentRelation['foreign_key']); |
264 | 269 | } |
265 | 270 |
|
266 | 271 | $parameter = $this->addFilterMetadata($parameter); |
|
0 commit comments