Tutoriels Symfony + Twig 01 May 2026 13 min de lecture

Jour 7 - Mettre en place un back-office EasyAdmin propre pour le blog

On configure EasyAdmin pour gérer les articles rapidement : champs utiles, filtres, aperçu et workflow éditorial simple.

Jour 7 - Mettre en place un back-office EasyAdmin propre pour le blog - article technique

EasyAdmin permet d’aller vite, mais seulement si on le configure avec un vrai flux éditorial.

Aujourd’hui on met l’accent sur la clarté des champs, les filtres et la productivité quotidienne.

Objectif d’apprentissage

Construire un back-office éditorial efficace, lisible et sécurisé pour publier des articles sans friction.

Ce que tu vas pratiquer aujourd’hui

  • Créer un Dashboard clair.
  • Configurer un CRUD article orienté édition.
  • Ajouter des filtres utiles (statut, date, catégorie).
  • Limiter les erreurs humaines avec des choix simples.

1. Créer le dashboard admin

Le dashboard doit être minimal et orienté action: gérer les articles, catégories et tags.

Évite le bruit dans la navigation.

#[Route('/admin', name: 'admin')]
final class DashboardController extends AbstractDashboardController
{
    public function configureMenuItems(): iterable
    {
        yield MenuItem::linkToCrud('Articles', 'fa fa-newspaper', BlogPost::class);
        yield MenuItem::linkToCrud('Catégories', 'fa fa-folder', BlogCategory::class);
        yield MenuItem::linkToCrud('Tags', 'fa fa-tags', BlogTag::class);
    }
}

2. Configurer le CRUD des articles

Expose uniquement les champs utiles et garde un ordre logique pour la saisie.

Le but est d’éditer vite, sans ambiguïté.

yield TextField::new('title');
yield TextField::new('slug');
yield TextareaField::new('excerpt');
yield TextareaField::new('content')->hideOnIndex();
yield ChoiceField::new('status')->setChoices([
    'Brouillon' => BlogPost::STATUS_DRAFT,
    'Publié' => BlogPost::STATUS_PUBLISHED,
]);
yield DateTimeField::new('publishedAt');
yield IntegerField::new('readingTime');

3. Ajouter des filtres concrets

Les filtres donnent une vraie valeur quand le volume de contenu augmente.

Ajoute les filtres indispensables dès le départ.

public function configureFilters(Filters $filters): Filters
{
    return $filters
        ->add('status')
        ->add('publishedAt')
        ->add('primaryCategory')
        ->add('featured');
}

Checklist de fin de session

  • Accès admin fonctionnel.
  • CRUD article lisible.
  • Filtres utiles activés.
  • Workflow brouillon/publié clair.

Erreurs fréquentes à éviter

  • Sauter la vérification finale parce que “ça marche chez moi”.
  • Mélanger trop de logique dans le controller au lieu de garder un flux clair.
  • Oublier la cohérence entre la donnée, le template Twig et le comportement en production.

Pourquoi cette étape compte en conditions réelles

Dans un vrai projet client, chaque étape technique doit rester compréhensible par l’équipe, duplicable sur un autre environnement et fiable dans le temps. Ici, l’objectif est de transformer la théorie en un flux de travail concret, avec des décisions simples que tu peux défendre en revue de code.

Si tu appliques sérieusement les points du jour (créer un dashboard clair.), tu réduis la dette technique dès le départ et tu facilites la suite: SEO, publication, maintenance et déploiement. C’est exactement la différence entre un blog “démo” et un blog exploitable en production.

Mini plan de révision

  • Reprends ce point et explique-le à voix haute comme si tu faisais un code review : Créer un Dashboard clair.
  • Reprends ce point et explique-le à voix haute comme si tu faisais un code review : Configurer un CRUD article orienté édition.
  • Reprends ce point et explique-le à voix haute comme si tu faisais un code review : Ajouter des filtres utiles (statut, date, catégorie).

Exercice rapide

Ajoute une action “Prévisualiser” pour ouvrir un article en mode preview avant publication.

Et demain ?

Demain, on gère les images d’articles avec upload propre, fallback et sécurité basique.

Partager

Faire circuler cet article

Si ce contenu peut aider quelqu’un dans son projet, tu peux le partager directement.

LinkedIn X WhatsApp

Tu dois structurer un backend, clarifier une API ou reprendre un existant en production ?

Échanger sur ton besoin