Aller au contenu

Configuration

phil/enums-bundle

L'alias est phil_enums. Il y a trois clés, toutes facultatives :

# config/packages/phil_enums.yaml
phil_enums:
    # Where debug:enums and phil:enums:typescript look for enums: directories or files.
    paths: ['%kernel.project_dir%/src']

    doctrine:
        # DBAL types that store an EnumSet, by type name (see Doctrine).
        sets:
            permissions: { enum: App\Security\Permission, storage: bitmask }
            channels: { enum: App\Notification\Channel }   # storage: json, the default

    # Symfony state machines built from the #[TransitionsTo] of an enum, by workflow name.
    workflows:
        order: { enum: App\Order\OrderStatus, supports: [App\Order\Order], property: status }
CléValeur par défautSignification
paths['%kernel.project_dir%/src']Les répertoires et les fichiers que les commandes lisent pour trouver les déclarations d'enum (Commandes).
doctrine.sets.<name>.enumrequiseL'enum de l'ensemble ; une classe qui n'est pas une enum fait échouer la construction du conteneur.
doctrine.sets.<name>.storagejsonbitmask (un entier, pour une enum d'indicateurs binaires) ou json (une liste JSON de valeurs) (Doctrine).
workflows.<name>.enumrequiseUne enum à valeurs dont les cas déclarent #[TransitionsTo] (Routage, expressions et workflows).
workflows.<name>.supportsrequiseLes classes auxquelles le workflow s'applique ; au moins une.
workflows.<name>.propertystatusLa propriété qui contient le cas.

Ce qui varie d'une enum à l'autre (son domaine de traduction et son préfixe de clé, ses groupes, sa couleur) se déclare sur l'enum elle-même, jamais ici.

Services

Le bundle enregistre chaque service dès son installation ou, pour les intégrations, dès que le paquet dont le service a besoin est installé. Chacun n'agit que sur ce qui le demande.

ServiceÉtiquettesEnregistréAgit sur
Infrastructure\Form\EnumTypeExtensionform.type_extensionToujoursChaque champ EnumType ; ne change rien sans les options de Formulaires, sauf les libellés.
Infrastructure\Form\EnumSetTypeform.typeToujoursLes champs de données EnumSet (Formulaires).
Infrastructure\Validator\EnumCaseValidator, Infrastructure\Validator\EnumSetOfValidatorvalidator.constraint_validatorToujoursLes contraintes EnumCase et EnumSetOf (Validation).
Infrastructure\Validator\TransitionValidatorvalidator.constraint_validatorToujours ; reçoit le service doctrine s'il existeLa contrainte Transition : elle lit le cas précédent dans l'unité de travail de Doctrine ou, sans Doctrine, dans l'objet seul (Validation).
Infrastructure\Twig\EnumsExtensiontwig.attribute_extension, twig.runtimeToujoursLes fonctions et les filtres Twig (Twig).
Infrastructure\Translation\EnumTranslationExtractortranslation.extractor (alias phil_enums)Avec symfony/translationtranslation:extract (Traduction).
Infrastructure\Console\DebugEnumsCommand, Infrastructure\Console\ExportTypeScriptCommand, Infrastructure\Console\ExportIcuCommandconsole.commandAvec symfony/consoledebug:enums, phil:enums:typescript et phil:enums:icu (Commandes).
Infrastructure\Console\CheckSetColumnsCommandconsole.commandAvec symfony/console et doctrine/ormphil:enums:check-sets (Doctrine).
Infrastructure\Http\ParsedEnumValueResolvercontroller.argument_value_resolverAvec symfony/http-kernelLes arguments marqués #[ParseEnum] (Routage, expressions et workflows).
Infrastructure\ExpressionLanguage\EnumsExpressionProvidersecurity., routing. et validator.expression_language_providerAvec symfony/expression-languageenum_meta(), enum_in_group(), enum_from().
Infrastructure\OpenApi\NelmioEnumModelDescribernelmio_api_doc.model_describer, avant nelmio_api_doc.model_describers.enumAvec nelmio/api-doc-bundleLes modèles d'enum (API).
Infrastructure\OpenApi\ApiPlatformEnumPropertyMetadataFactorydécore api_platform.metadata.property.metadata_factory, autour de son décorateur de schéma et à l'intérieur de son cacheAvec api-platform/symfonyLes propriétés d'enum des ressources (API).
Infrastructure\Maker\MakeEnummaker.commandAvec symfony/maker-bundlemake:enum (Commandes).
Infrastructure\Serializer\EnumsNormalizerserializer.normalizer, avant les normaliseurs de Symfony pour les valeurs traduisibles, les cas d'enum et les objetsAvec symfony/serializerLes ensembles d'enums, les tables d'enums et les cas avec libellé (API).

Chaque service qui affiche un libellé reçoit le service translator, ou rien s'il n'y en a pas. Les types de colonne EnumSet ne sont pas des services : le bundle les inscrit dans le registre de types de DBAL à son démarrage, lorsque doctrine/dbal est installé (Doctrine). Les workflows ne sont pas non plus des services du bundle : il les ajoute en tête des workflows de FrameworkBundle, lorsque symfony/workflow est installé.