|
18 | 18 | use ApiPlatform\GraphQl\Exception\InvalidTypeException; |
19 | 19 | use ApiPlatform\GraphQl\Resolver\Factory\ResolverFactoryInterface; |
20 | 20 | use ApiPlatform\GraphQl\Type\Definition\TypeInterface; |
| 21 | +use ApiPlatform\Metadata\FilterInterface; |
21 | 22 | use ApiPlatform\Metadata\GraphQl\Mutation; |
22 | 23 | use ApiPlatform\Metadata\GraphQl\Operation; |
23 | 24 | use ApiPlatform\Metadata\GraphQl\Query; |
24 | 25 | use ApiPlatform\Metadata\GraphQl\Subscription; |
25 | 26 | use ApiPlatform\Metadata\InflectorInterface; |
| 27 | +use ApiPlatform\Metadata\OpenApiParameterFilterInterface; |
26 | 28 | use ApiPlatform\Metadata\Property\Factory\PropertyMetadataFactoryInterface; |
27 | 29 | use ApiPlatform\Metadata\Property\Factory\PropertyNameCollectionFactoryInterface; |
28 | 30 | use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface; |
@@ -296,20 +298,40 @@ public function resolveResourceArgs(array $args, Operation $operation): array |
296 | 298 | continue; |
297 | 299 | } |
298 | 300 |
|
| 301 | + $filter = $this->filterLocator->get($filterId); |
299 | 302 | $parsedKey = explode('[:property]', $key); |
300 | 303 | $flattenFields = []; |
301 | | - foreach ($this->filterLocator->get($filterId)->getDescription($operation->getClass()) as $key => $value) { |
302 | | - $values = []; |
303 | | - parse_str($key, $values); |
304 | | - if (isset($values[$parsedKey[0]])) { |
305 | | - $values = $values[$parsedKey[0]]; |
| 304 | + |
| 305 | + if ($filter instanceof FilterInterface) { |
| 306 | + foreach ($filter->getDescription($operation->getClass()) as $name => $value) { |
| 307 | + $values = []; |
| 308 | + parse_str($name, $values); |
| 309 | + if (isset($values[$parsedKey[0]])) { |
| 310 | + $values = $values[$parsedKey[0]]; |
| 311 | + } |
| 312 | + |
| 313 | + $name = key($values); |
| 314 | + $flattenFields[] = ['name' => $name, 'required' => $value['required'] ?? null, 'description' => $value['description'] ?? null, 'leafs' => $values[$name], 'type' => $value['type'] ?? 'string']; |
| 315 | + } |
| 316 | + |
| 317 | + $args[$parsedKey[0]] = $this->parameterToObjectType($flattenFields, $parsedKey[0]); |
| 318 | + } |
| 319 | + |
| 320 | + if ($filter instanceof OpenApiParameterFilterInterface) { |
| 321 | + foreach ($filter->getOpenApiParameters($parameter) as $value) { |
| 322 | + $values = []; |
| 323 | + parse_str($value->getName(), $values); |
| 324 | + if (isset($values[$parsedKey[0]])) { |
| 325 | + $values = $values[$parsedKey[0]]; |
| 326 | + } |
| 327 | + |
| 328 | + $name = key($values); |
| 329 | + $flattenFields[] = ['name' => $name, 'required' => $value->getRequired(), 'description' => $value->getDescription(), 'leafs' => $values[$name], 'type' => $value->getSchema()['type'] ?? 'string']; |
306 | 330 | } |
307 | 331 |
|
308 | | - $name = key($values); |
309 | | - $flattenFields[] = ['name' => $name, 'required' => $value['required'] ?? null, 'description' => $value['description'] ?? null, 'leafs' => $values[$name], 'type' => $value['type'] ?? 'string']; |
| 332 | + $args[$parsedKey[0]] = $this->parameterToObjectType($flattenFields, $parsedKey[0].$operation->getShortName().$operation->getName()); |
310 | 333 | } |
311 | 334 |
|
312 | | - $args[$parsedKey[0]] = $this->parameterToObjectType($flattenFields, $parsedKey[0]); |
313 | 335 | continue; |
314 | 336 | } |
315 | 337 |
|
|
0 commit comments