Skip to content

Commit dddd3ee

Browse files
authored
fix(metadata): parameter provider within filter (#7081)
1 parent d696a8e commit dddd3ee

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

src/Metadata/Parameter.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,13 @@ public function getValue(mixed $default = new ParameterNotFound()): mixed
127127
return $this->extraProperties['_api_values'] ?? $default;
128128
}
129129

130+
public function setValue(mixed $value): static
131+
{
132+
$this->extraProperties['_api_values'] = $value;
133+
134+
return $this;
135+
}
136+
130137
/**
131138
* @return array<string, mixed>
132139
*/

src/Metadata/Resource/Factory/ParameterResourceMetadataCollectionFactory.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,10 @@ private function getDefaultParameters(Operation $operation, string $resourceClas
117117
['propertyNames' => $propertyNames, 'properties' => $properties] = $this->getProperties($resourceClass);
118118
$parameters = $operation->getParameters() ?? new Parameters();
119119
foreach ($parameters as $key => $parameter) {
120+
if (null === $parameter->getProvider() && (($f = $parameter->getFilter()) && $f instanceof ParameterProviderFilterInterface)) {
121+
$parameters->add($key, $parameter->withProvider($f->getParameterProvider()));
122+
}
123+
120124
if (':property' === $key) {
121125
foreach ($propertyNames as $property) {
122126
$converted = $this->nameConverter?->denormalize($property) ?? $property;
@@ -131,7 +135,7 @@ private function getDefaultParameters(Operation $operation, string $resourceClas
131135

132136
$key = $parameter->getKey() ?? $key;
133137

134-
if (str_contains($key, ':property') || (($f = $parameter->getFilter()) && is_a($f, PropertiesAwareInterface::class, true)) || $parameter instanceof PropertiesAwareInterface) {
138+
if (str_contains($key, ':property') || ((($f = $parameter->getFilter()) && is_a($f, PropertiesAwareInterface::class, true)) || $parameter instanceof PropertiesAwareInterface)) {
135139
$p = [];
136140
foreach ($propertyNames as $prop) {
137141
$p[$this->nameConverter?->denormalize($prop) ?? $prop] = $prop;

0 commit comments

Comments
 (0)