[Symfony] Utiliser les références YAML dans la configuration EasyAdmin pour des entités virtuelles

Publié le 23/10/2018 • Mis à jour le 23/10/2018

English language detected! 🇬🇧

  We noticed that your browser is using English. Do you want to read this post in this language?

Read the english version 🇬🇧

Une des nombreuses fonctionnalités intéressante du bundle EasyAdmin est qu'il permet de définir des filtres pour les entités. On peut donc avoir plusieurs entrées pour une même entité mais pour différents types par exemple. Je voulais partager la configuration de l'une de mes entités principale (dans ce cas Token) avec les autres entités virtuelles correspondant à la même table. (dans ce cas TokenType2) sans avoir à dupliquer toute la configuration. Je n'avais jamais utilisé les références YAML jusqu'à maintenant et c'est un cas d'utilisation parfait pour elles. Le code est assez explicite. L'entité virtuelle TokenType2 utilise les trois références de configuration précédemment créées dans la section de l'entité principale Token.


easy_admin:
    # ...
    entities:
        Token: # ---------------------------------------------------------------
            class: AppBundle\Entity\Token
            list:
                actions: &token.list.actions # <------- 1st reference declaration
                    - { name: 'tokenShowPublic', icon: 'binoculars', label: 'View' }
                    # ... long list of actions
                fields: &token.list.fields # <------- 2nd reference declaration
                    - { property: 'id' }
                    # ... long list of fields
            form:
                fields: &token.form.fields # <------- 3rd reference declaration
                    - { type: 'group', label: 'IDs', icon: 'gear' }
                    - { property: 'id', type: 'integer', type_options: { disabled: true }, css_class: 'col-sm-2'}
                    # ... long list of fields

        TokenType2:
            class: AppBundle\Entity\Token
            dql_filter: 'entity.tokenType=2'
            list:
                actions: *token.list.actions # <------- use 1st reference
                fields: *token.list.fields # <------- use 2nd reference
            form:
                fields: *token.form.fields # <------- use 3rd reference

            # That's it, no more duplicated configuration!

 Plus sur Stackoverflow