Use enums for LabelOptions

This commit is contained in:
Jan Böhmer 2023-06-12 23:39:30 +02:00
parent 485b35fbd4
commit 71cd4057a7
23 changed files with 329 additions and 157 deletions

View file

@ -25,6 +25,7 @@ namespace App\Twig;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
use Twig\TwigFunction;
use Twig\TwigTest;
/**
@ -37,6 +38,14 @@ final class TwigCoreExtension extends AbstractExtension
{
}
public function getFunctions()
{
return [
/* Returns the enum cases as values */
new TwigFunction('enum_cases', [$this, 'getEnumCases']),
];
}
public function getTests(): array
{
return [
@ -49,6 +58,15 @@ final class TwigCoreExtension extends AbstractExtension
];
}
public function getEnumCases(string $enum_class): array
{
if (!enum_exists($enum_class)) {
throw new \InvalidArgumentException(sprintf('The given class "%s" is not an enum!', $enum_class));
}
return ($enum_class)::cases();
}
public function getFilters(): array
{
return [