Skip to content

Commit 742c3c2

Browse files
committed
bug #46586 [HttpKernel] Fix BackedEnumValueResolver already resolved enum value (janatjak)
This PR was merged into the 6.1 branch. Discussion ---------- [HttpKernel] Fix BackedEnumValueResolver already resolved enum value | Q | A | ------------- | --- | Branch? | 6.1 | Bug fix? | yes | New feature? | no | Deprecations? | no | Tickets | Fix #46585 | License | MIT | Doc PR | Fix #46585 Commits ------- d0923b2 [HttpKernel] Fix BackedEnumValueResolver already resolved enum value
2 parents 17b7a59 + d0923b2 commit 742c3c2

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

src/Symfony/Component/HttpKernel/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
}

src/Symfony/Component/HttpKernel/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)