EasyAdminBundle génère un back-office complet pour une application Symfony : liste, détail, création et édition pour chacune de tes entités Doctrine, avec recherche, tri, filtres et pagination fournis. Ce guide reprend la mise en place pas à pas, de l’installation à la protection du back-office.

La vidéo en bas de page a été enregistrée sur EasyAdmin 4 : les commandes et les classes montrées n’ont pas changé depuis, mais le choix de version mérite une mise au point.

Quelle version d’EasyAdmin choisir ?

EasyAdmin est activement maintenu, mais les branches n’ont pas le même statut. La branche 5.x est la version stable : la dernière release publiée est la v5.6.1, datée du 30 septembre 2026, et elle demande PHP 8.2 au minimum pour Symfony 6.4 ou supérieur. La branche 4.x ne reçoit plus que des correctifs : PHP 8.1 et Symfony 5.4 y restent acceptés, mais aucune fonctionnalité nouvelle n’y arrivera.

Sur un projet neuf, pars donc sur la 5.x. Si tu es déjà en 4.x, la marche à suivre est documentée dans EasyAdmin 5.0 : ce qui change et comment migrer.

Installer EasyAdminBundle

L’installation tient en une commande :

composer require easycorp/easyadmin-bundle

Avec Symfony Flex, le recipe enregistre le bundle et il n’y a rien d’autre à déclarer. Sans Flex, il faut ajouter EasyAdminBundle et Symfony\UX\TwigComponent\TwigComponentBundle à config/bundles.php : EasyAdmin construit son interface avec des Twig Components.

Un prérequis à ne pas oublier : EasyAdmin ne travaille qu’avec des entités Doctrine ORM. Doctrine ODM, donc MongoDB ou PHPCR, n’est pas supporté.

Créer le dashboard

Le dashboard est le point d’entrée du back-office. Le générateur s’en charge :

php bin/console make:admin:dashboard

Le contrôleur produit étend AbstractDashboardController et porte l’attribut qui fixe l’URL et le nom de la route :

#[AdminDashboard(routePath: '/admin', routeName: 'admin')]

Visite ensuite /admin : la page d’accueil par défaut s’affiche, avec un menu vide. C’est ce fichier que tu complètes pour ajouter tes entrées de menu et tes widgets, en PHP et sans YAML.

Générer un CRUD

Un contrôleur CRUD pilote les quatre écrans d’une entité : index, detail, new et edit. Le générateur écrit le squelette :

php bin/console make:admin:crud

Deux méthodes comptent dans le fichier obtenu. getEntityFqcn() retourne la classe de l’entité gérée. configureFields() décrit les champs affichés, et tu as le choix de la précision : un simple nom de propriété, un Field::new(), ou un champ typé comme TextField, MoneyField ou DateTimeField.

Les routes sont créées par un loader dédié, sous la forme admin_<entité>_index, _new, _edit et _detail. Tu n’écris donc aucune route à la main.

Sécuriser le back-office

EasyAdmin ne gère pas l’authentification : il s’appuie entièrement sur le composant Security de Symfony. Tu déclares tes utilisateurs et tes rôles comme d’habitude, puis tu restreins l’accès dans config/packages/security.yaml :

access_control:
  - { path: ^/admin, roles: ROLE_ADMIN }

Sans cette règle, ton back-office est ouvert à quiconque connaît l’URL. Pour des permissions plus fines, où un auteur ne modifie que ses propres fiches, ce sont les voters de Symfony qui prennent le relais.

Et après ?

Deux extensions reviennent vite une fois le CRUD en place : l’upload de fichiers, qui passe par un champ dédié plutôt qu’un champ texte, et la personnalisation des actions disponibles par entité. Pour le premier, uploader plusieurs fichiers avec EasyAdmin 4 et VichUploaderBundle détaille la configuration du champ.

La documentation officielle d’EasyAdminBundle est publiée par version et reste la référence à jour, en complément de la démonstration vidéo.