From 62c60f374a4722a8fbd0bbe1378d0186f1fb3271 Mon Sep 17 00:00:00 2001 From: Florent Destremau Date: Thu, 2 Feb 2023 19:41:10 +0100 Subject: [PATCH 1/2] Convert backed enums to their value when generating default routes --- .../Routing/Matcher/Dumper/CompiledUrlMatcherDumper.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Symfony/Component/Routing/Matcher/Dumper/CompiledUrlMatcherDumper.php b/src/Symfony/Component/Routing/Matcher/Dumper/CompiledUrlMatcherDumper.php index 980aa8e51f864..9f730998601da 100644 --- a/src/Symfony/Component/Routing/Matcher/Dumper/CompiledUrlMatcherDumper.php +++ b/src/Symfony/Component/Routing/Matcher/Dumper/CompiledUrlMatcherDumper.php @@ -467,6 +467,9 @@ public static function export(mixed $value): string } if (!\is_array($value)) { if (\is_object($value)) { + if ($value instanceof \BackedEnum) { + return "'$value->value'"; + } throw new \InvalidArgumentException('Symfony\Component\Routing\Route cannot contain objects.'); } From 4fd790d8db82d9f491204b0f172ac638d88c34a9 Mon Sep 17 00:00:00 2001 From: Florent Destremau Date: Thu, 2 Feb 2023 19:49:50 +0100 Subject: [PATCH 2/2] Updated parameter value further up in the call stack --- src/Symfony/Component/Routing/Loader/AnnotationClassLoader.php | 3 ++- .../Routing/Matcher/Dumper/CompiledUrlMatcherDumper.php | 3 --- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/Routing/Loader/AnnotationClassLoader.php b/src/Symfony/Component/Routing/Loader/AnnotationClassLoader.php index b63dc5c85e665..7dad0136ad611 100644 --- a/src/Symfony/Component/Routing/Loader/AnnotationClassLoader.php +++ b/src/Symfony/Component/Routing/Loader/AnnotationClassLoader.php @@ -205,7 +205,8 @@ protected function addRoute(RouteCollection $collection, object $annot, array $g } foreach ($paths as $locale => $path) { if (preg_match(sprintf('/\{%s(?:<.*?>)?\}/', preg_quote($param->name)), $path)) { - $defaults[$param->name] = $param->getDefaultValue(); + $defaultValue = $param->getDefaultValue(); + $defaults[$param->name] = $defaultValue instanceof \BackedEnum ? $defaultValue->value : $defaultValue; break; } } diff --git a/src/Symfony/Component/Routing/Matcher/Dumper/CompiledUrlMatcherDumper.php b/src/Symfony/Component/Routing/Matcher/Dumper/CompiledUrlMatcherDumper.php index 9f730998601da..980aa8e51f864 100644 --- a/src/Symfony/Component/Routing/Matcher/Dumper/CompiledUrlMatcherDumper.php +++ b/src/Symfony/Component/Routing/Matcher/Dumper/CompiledUrlMatcherDumper.php @@ -467,9 +467,6 @@ public static function export(mixed $value): string } if (!\is_array($value)) { if (\is_object($value)) { - if ($value instanceof \BackedEnum) { - return "'$value->value'"; - } throw new \InvalidArgumentException('Symfony\Component\Routing\Route cannot contain objects.'); }