Skip to content

Commit 471d32f

Browse files
committed
[HttpKernel] Fix BackedEnumValueResolver already resolved enum value
1 parent 9498663 commit 471d32f

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

Controller/ArgumentResolver/BackedEnumValueResolver.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@ public function resolve(Request $request, ArgumentMetadata $argument): iterable
5151
return;
5252
}
5353

54+
if ($value instanceof \BackedEnum) {
55+
yield $value;
56+
57+
return;
58+
}
59+
5460
if (!\is_int($value) && !\is_string($value)) {
5561
throw new \LogicException(sprintf('Could not resolve the "%s $%s" controller argument: expecting an int or string, got %s.', $argument->getType(), $argument->getName(), get_debug_type($value)));
5662
}

Tests/Controller/ArgumentResolver/BackedEnumValueResolverTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,12 @@ public function provideTestResolveData(): iterable
9595
),
9696
[null],
9797
];
98+
99+
yield 'already resolved attribute value' => [
100+
self::createRequest(['suit' => Suit::Hearts]),
101+
self::createArgumentMetadata('suit', Suit::class),
102+
[Suit::Hearts],
103+
];
98104
}
99105

100106
public function testResolveThrowsNotFoundOnInvalidValue()

0 commit comments

Comments
 (0)