Symfony EasyAdmin : un administration simple et efficace

Symfony EasyAdmin : un administration simple et efficace

EasyAdmin est un bundle qui permet de créer une interfaces d’administration rapidement, sans réinventer la roue.

Recherche, création, lecture, modification, listing, suppression d’entités sont des opérations on ne peut plus classique dans le développement de back-office.

EasyAdmin propose tout cela simplement, alors pourquoi réinventer la roue carré ? Est-il suffisemment extensible pour répondre à l’ensemble des besoins ? Est-ce que EasyAdmin remplace avantagesement Sonata Regardons ensemble les forces et les faiblesses de ce bundle.

Tout ceux qui ont déjà eu à développer des back-offices customs savent à quel point ils peuvent être pénibles à faire évoluer et à maintenir dans le temps. Alors pourquoi s’embêter quand un admin bundle peut facilement faire 70% du travail et nous permettre de se concentrer sur les features spécifiques des clients ?

Un nouveau Sonata ?

Sonata est historiquement le bundle qui permet de générer “rapidement” des back-office. Sonata est très riche en fonctionnalités, plutôt mal documenté.

Le coût de mise en place de Sonata était quasiment aussi important qu’un développement from Scratch, le temps de configuration et le temps pour maintenir la compatibilité avec les différentes dépendances était presque aussi important qu’un développement from scratch. La seule différence c’est que le temps de développement n’était plus consacré à développé des fonctionnalités pour apporter de la valeur au client mais pour faire rentrer le besoin métier dans Sonata.

EasyAdmin est résolument différent, il se concentre sur les opérations SCRUD (Search, Create, Read, Update, Delete) et il fournit une documentation très complète.

Cependant, cette simplicité a un coût, il montre vite ses limites quand des besoins très spécifiques se font sentir.

EasyAdmin cible principalement les applications simples et de petite ou moyenne envergure (un site de news, un blog, des petites boutiques en lignes, des applications de gestions,… ).

Un autre cas d’utilisation est pour la mise en place de preuve de concept, de produit de lancement, … .

Pour des applications plus complexe, EasyAdmin n’est clairement pas la solution. Ce n’est pas un remplacent de Sonata.

Les fonctionnalités clés d’EasyAdmin

EasyAdmin est compatible Symfony 2.x, 3.x et 4.x.

Sa killer feature est de mettre en place facilement des opérations SCRUD (Search / Create/Read / Update / Delete) très facilement sur des entités Doctrine seulement sur la partie ORM, l’ODM est malheuresement pas supporté.

Toutes les opérations peuvent être configuré dans des fichiers YAML. Le formalisme est suffisemment lisible pour comprendre de quoi il en retourne.

# config/packages/easy_admin.yaml

easy_admin:
    entities:
        Customer:
            class: App\Entity\Customer
            form:
                fields:
                    - 'id'
                    - { property: 'email', type: 'email', type_options: { trim: true } }
                    - { property: 'interests', type_options: { expanded: true, multiple: true } }
                    - { property: 'updated_at', type_options: { widget: 'single_text' } }

Le mode “listing” est également configurable, il un champ de recherche full-text (mais très limité), une pagination et la possibilité de trier les colonnes par défaut.

# config/packages/easy_admin.yaml

easy_admin:
    entities:
        Customer:
            class: App\Entity\Customer
            list:
                fields: ['id', 'firstName', 'lastName', 'phone', 'email']

            # if the field name contains a dot, it's the property of a Doctrine association

            list:
                # this config displays the 'email' and 'phone' properties of the

                # Doctrine entity associated via the 'user' property of 'Customer'

                fields: ['id', 'name', 'age', 'user.email', 'user.phone']

            # Doctrine associations are also supported in the 'search' view. This config looks

            # for data in the 'email' and 'phone' properties of the associated 'user' entity

            search:
                fields: ['name', 'user.email', 'user.phone']
    # ...

Ce backoffice est traduit dans de nombreuses de langues différentes, ce qui n’est pas négligeable dans un contexte d’internationalisation.

Les controleurs sont extensibles et des events sont présents à de nombreux endroits dans les opérations CRUD. Ce qui permet d’étendre facilement les opérations natives fournit par ce bundle.

Coté front-end, le back-office exploite le template Admin LTE (lui même bati sur Bootstrap) ce qui permet de bénéficier de tout les composants de template bien connue dans le monde des back-office.

Ses limitations

Cette simplicité cache quelques limitations qui peuvent devenir problématique pour des projets complexes :

Bilan

EasyAdmin permet de créer très facilement et très rapidement une interface d’administration. Il s’avère suffisant pour des applications simples.

Il est également possible d’utiliser EasyAdmin pour prototyper un Back Office pour une démonstration client et le remplacer par un développement custom après coup. Cela vous évite d’investir du temps dans un projet au périmètre encore flou ou a une preuve de concept qui ne débouchera pas forcément sur quelque chose de concret derrière.

comments powered by Disqus

Voir aussi

Interagir avec eZ Publish legacy depuis une commande Symfony

Interagir avec eZ Publish legacy depuis une commande Symfony

Un petit bout de code bien utilé qui permet de faire appel au legacy d’eZ Publish via une action Symfony.

Ajouter un widget sur le tableau de bord de Wordpress

Ajouter un widget sur le tableau de bord de Wordpress

Au fil des années Wordpress est devenu bien plus qu’un moteur de blog, c’est un véritable CMS. Le tableau de bord joue un rôle important …

Quels balisages pour un nuage de tag accessible ?

Quels balisages pour un nuage de tag accessible ?

Les nuages de tags est un type de menu qui a mis du temps à s’imposer comme mode de navigation. L’article de Sébastien Billard …

CMS basé sur des frameworks

CMS basé sur des frameworks

Le début des années 2000 à marqué l’avènement des CMS. A cette époque, il pouvait être considéré comme les seules solutions viables pour des …

A la une
  • Rencontre du numérique 2019 - Nîmes
  • référencement naturel d'un hôtel
  • Développeur eZ Platform
  • Tech lead Symfony
  • Expert Qualité Web

Copyright - Sylvain FIX

2009 - 2019