Expert Sonata Project : Back-Office Symfony depuis 2014
SonataAdminBundle est l'un des frameworks d'administration Symfony les plus utilisés en France. Chez SmartBooster, nous l'utilisons depuis sa première version et avons contribué directement à son écosystème open source.
Développement, maintenance, montée de version ou migration vers une solution plus moderne : nous connaissons Sonata de l'intérieur.
SONATA ADMINBUNDLE
Le framework d'administration Symfony de référence
SonataAdminBundle est un framework open source qui génère automatiquement une interface d'administration complète pour vos entités Doctrine. Inspiré de Django Admin, il fonctionne sur le principe d'une classe Admin par entité : vous déclarez les champs à afficher, Sonata génère les vues liste, création, édition et affichage.
Là où d'autres solutions proposent du CRUD générique, Sonata offre une configuration fine : filtres avancés, droits par rôle ou par objet (ACL), actions groupées, export natif, entités imbriquées (child admin), blocs de tableau de bord configurables.
C'est aujourd'hui l'un des back-offices Symfony les plus répandus en France sur les projets métier — et l'un des plus complets pour les équipes qui maîtrisent son architecture.
- CRUD automatique par entité Doctrine
- Une classe Admin = toutes les vues configurées. Zéro template HTML à écrire pour les cas standards.
- Sécurité par rôle ou par objet (ACL)
- Deux niveaux de droits : actions (LIST, CREATE, EDIT…) et ACL granulaire par enregistrement.
- Architecture modulaire en bundles
- AdminBundle + DoctrineORMAdminBundle + bundles complémentaires (Media, User, Translation…) — on intègre ce dont on a besoin.
FONCTIONNALITÉS
Ce que Sonata AdminBundle sait faire
Sonata est l'un des frameworks d'administration Symfony les plus complets. Ces fonctionnalités servent de base à nos ateliers de conception pour cadrer les back-offices avec nos clients.
Interface CRUD par entité
Une classe Admin par entité Doctrine configure automatiquement toutes les vues : liste, création, édition, affichage. Zéro template HTML à écrire pour les cas courants.
Filtres et grilles de données
DatagridMapper permet de définir des filtres avancés sur n'importe quel champ. Tri, pagination et recherche texte fonctionnent nativement sur des bases de millions d'enregistrements.
Sécurité granulaire (ROLES + ACL)
Deux niveaux de sécurité : ROLES par action (LIST, CREATE, EDIT, DELETE, EXPORT) et ACL par objet (propriétaire, visibilité par utilisateur). Adapté aux back-offices multi-profils.
Actions groupées (batch)
Batch actions : appliquer une opération sur une sélection d'enregistrements en un clic. Publication en masse, archivage, réassignation sans développement front spécifique.
Export natif multi-format
Export CSV, Excel, JSON et XML intégré sur toute liste, sans développement spécifique. Basé sur SonataExporter →filtre et colonnes exportées configurables dans l'Admin class.
Entités imbriquées (Child Admin)
Child Admin permet d'administrer une entité dans le contexte de son parent (ex : lignes de commande dans une commande). Navigation hiérarchique et périmètre automatiquement limité.
Dashboard et blocs (SonataBlock)
Le tableau de bord est composé de blocs configurables (SonataBlockBundle). Statistiques, graphiques, notifications →chaque bloc est un service Symfony réutilisable.
Traductions multi-langue
SonataTranslationBundle (créé par SmartBooster en 2014) ajoute la gestion de contenu multi-langue directement dans l'interface Admin, via Doctrine Extensions.
Commandes console
Commandes Symfony intégrées : lister les admins, générer les ACL, déboguer la configuration. Le tout explorable via bin/console sonata:admin:*.
Résultats
Un aperçu en images
Parce qu'une capture d'écran vaut mieux qu'une longue description, voici un aperçu concret de ce qui a été réalisé.
Exemples de réalisation
Ce que nous avons construit avec Sonata AdminBundle
Voici trois projets représentatifs où Sonata AdminBundle constitue le cœur du back-office — de la gestion de contenu à l'administration de plateformes multi-enseignes.
CAPRENOV+
Refonte d'un simulateur de travaux de rénovation énergétique
Reprise et refonte du back-office Sonata d'un simulateur de rénovation énergétique : architecture modulaire, montée en compétence d'une équipe de 15 personnes.
La Maison Saint-Gobain
Tunnel de chiffrage et mise en relation travaux
Administration du tunnel de chiffrage La Maison Saint-Gobain : gestion des parcours dynamiques, règles de calcul et robustesse aux pics de charge TV.
Point P
Application de formation et d'entraînement à l'examen RGE
Back-office Sonata multi-enseignes pour Point.P et Cédéo : gestion des questions d'examen RGE, des sessions et des résultats par enseigne.
EXPERTISE
Contributeur Sonata depuis 2014
En 2014, alors que nous travaillions avec Symfony-CMF sur des projets de sites multilingues, nous avons créé le SonataTranslationBundle — un bundle permettant de gérer le contenu multi-langue directement dans l'interface SonataAdmin, via Doctrine Extensions.
Ce bundle a été intégré au projet officiel Sonata et est aujourd'hui référencé dans la documentation principale. Il est toujours actif et maintenu dans l'écosystème.
Cette contribution fondatrice nous a imposé de comprendre les entrailles de Sonata : architecture Admin, gestion des templates Twig, sécurité, événements internes. C'est cette connaissance profonde qui nous permet aujourd'hui de reprendre et faire évoluer n'importe quel projet Sonata, même les plus complexes.
Créateur du SonataTranslationBundle (2014)
Bundle intégré à l'organisation officielle sonata-project sur GitHub — premier commit en mars 2014 dans le contexte Symfony-CMF.
10+ ans de projets Sonata en production
Des projets Sonata 2.x encore en production aux migrations vers Sonata 4.x, nous couvrons l'intégralité du cycle de vie.
Profil Symfony Connect vérifié
Nicolas Bastien, fondateur de SmartBooster, dispose d'un profil Symfony Connect qui retrace les contributions open source depuis les débuts.
OPEN SOURCE
smartbooster/sonata-bundle : notre couche Sonata sur GitHub
Au fil des projets, nous avons factorisé nos extensions Sonata dans un bundle open source publié sur GitHub et Packagist. Ce bundle est déployé sur l'intégralité de nos projets Sonata et reflète nos standards de qualité.
Il couvre quatre problèmes récurrents que Sonata ne résout pas nativement : le style visuel, la gestion des emails, la sécurité de base et le paramétrage applicatif par environnement.
Thème CSS cohérent
Styles par défaut pour SonataAdmin : variables SCSS configurables, support Bootstrap-Sass et Tailwind →une interface propre sans partir de zéro.
Composant Mailer avec doc auto
Envoi d'emails transactionnels intégré avec documentation automatiquement générée de tous les templates →fini les emails non documentés perdus dans le code.
Gestion de la sécurité prête à l'emploi
Classe User clé en main avec login, mot de passe oublié, profil admin et mise à jour automatique de la dernière date de connexion →sécurité de base sans re-développer.
Paramétrage applicatif par environnement
Template de configuration, commande CD pour générer les paramètres manquants, entité en base et interface Admin dédiée →la gestion des paramètres applicatifs enfin structurée.
VOUS RECONNAISSEZ-VOUS ?
Les signaux que Sonata atteint ses limites
Sonata reste un outil puissant pour les équipes qui le maîtrisent. Mais sur des projets de plus de 5 ans, ces signaux apparaissent régulièrement.
Ralentissement des releases
Depuis 2022, le rythme des mises à jour de Sonata a significativement diminué. Les issues restent ouvertes plus longtemps, les PR de la communauté sont moins actives.
Dépendances qui se décrochent
Certains bundles tiers de l'écosystème Sonata ne suivent plus les versions récentes. Chaque montée de version Symfony devient un travail de coordination risqué.
UX datée difficile à personnaliser
L'interface SonataAdmin reste reconnaissable et peu flexible. Adapter l'expérience utilisateur aux standards 2024 demande un effort important.
VERSIONS
Historique des versions Sonata
Sonata Project suit le cycle de vie de Symfony. Voici les trois branches majeures, leur compatibilité et leur statut actuel. Voir les releases officielles →
-
Sonata 4.x
Version actuelleSymfony 5 / 6 / 7
Refonte majeure : PHP 8, Bootstrap 5, Stimulus, abandon de jQuery. Architecture modernisée mais communauté en net ralentissement depuis 2022. Branche maintenue, mais les contributions tierces se raréfient.
- PHP 8+
Utilisation des attributs PHP natifs pour la configuration des services. - Bootstrap 5 + Stimulus
Interface rafraîchie, jQuery supprimé →mais personnalisation toujours complexe. - Sonata Doctrine ORM 4.x
Requiert SonataDoctrineORMAdminBundle en complément pour la couche ORM.
- PHP 8+
-
Sonata 3.x
Fin de vieSymfony 3 / 4 / 5
Version de transition : Bootstrap 4, support Symfony 3 à 5. Nombreux projets en production encore sur cette branche. Migration vers 4.x complexe (breaking changes importants).
- Bootstrap 4
Refonte de l'interface graphique avec de nouvelles options de thème. - Dépendances jQuery
jQuery toujours requis →dette technique notable par rapport aux standards modernes.
- Bootstrap 4
-
Sonata 2.x
ObsolèteSymfony 2 / 3
Version originelle, très répandue sur les projets legacy Symfony 2/3. Nombreux projets encore en production avec cette version. Bootstrap 2/3, architecture CRUD mature.
- Bootstrap 2/3
Interface classique SonataAdmin, personnalisable mais vieillie visuellement. - Symfony-CMF
Époque de l'intégration avec Symfony CMF : contexte d'origine du SonataTranslationBundle.
- Bootstrap 2/3
POUR LES NOUVEAUX PROJETS
Sonata ou une alternative ?
Sonata reste pertinent pour les équipes qui le maîtrisent déjà et ont des processus rodés pour être efficaces. Pour un projet démarré aujourd'hui, d'autres outils offrent une courbe d'apprentissage plus courte, une communauté plus active et une meilleure ergonomie out-of-the-box.
| Catégorie | Outil | En deux mots | Lien |
|---|---|---|---|
| Symfony | EasyAdmin Bundle v4 · Symfony 6 / 7 | L'alternative naturelle dans l'écosystème Symfony. Configuration PHP simple, interface Bootstrap 5 propre, intégration Symfony 6/7 native. Meilleur choix pour un nouveau projet avec des besoins CRUD standards, moins puissant sur les cas complexes (ACL objet, child admins imbriqués). | En savoir + |
| Laravel | Laravel Nova Payant · $199/projet | Panel d'administration premium pour Laravel. Interface soignée, écosystème Nova actif, ressources et métriques intégrées. Nécessite de passer sur Laravel, pertinent pour les nouveaux projets sans contrainte de stack. | nova.laravel.com → |
| Laravel | FilamentPHP Open source · Laravel Livewire | Framework d'administration PHP open source basé sur Laravel Livewire et Alpine.js. Composants riches (tables, formulaires, widgets), personnalisation poussée, communauté très active. Alternative sérieuse et gratuite à Nova. | filamentphp.com → |
| No-code | Forest Admin SaaS / self-hosted | Génère un back-office directement depuis votre base de données existante, sans développement front. Forest Admin introspecte votre schéma et produit une interface configurable. Adapté aux équipes sans développeurs front disponibles ou pour des besoins d'admin internes rapides. | forestadmin.com → |
ET APRÈS SONATA ?
Plutôt que de continuer à patcher Sonata, nous avons développé SmartPlatform : notre propre framework de back-office Symfony, conçu pour les projets métier exigeants.
Symfony natif, architecture moderne, interface fluide — et une migration depuis Sonata que nous maîtrisons de bout en bout, puisque nous connaissons les deux côtés.
« La qualité est au rendez-vous et les délais maîtrisés. C'est un gage de sérénité que de travailler avec SmartBooster. »
« Tout au long de notre collaboration, Nicolas a toujours su être un professionnel exemplaire. En tant que project manager, il sait prendre tous les sujets à bras-le-corps et les prioriser avec intelligence.
Il sait aussi donner la visibilité suffisante et rassurante sur les avancées de ses équipes. Nicolas se révèle être un interlocuteur crédible et efficace autant sur le plan technique que sur le plan de la gestion projet. »
« Je recommande vivement Nicolas ! Il a cette grande qualité de structuration des projets qui permet d'avancer toujours de manière positive. En outre il est force de proposition et fait preuve d'une grande créativité.
Vous pouvez compter sur Nicolas ! »
POUR ALLER PLUS LOIN
Approfondir votre réflexion
Méthodologie éprouvée pour migrer votre projet Symfony, de la 4.x à la 7.x — sans casser la production.
Un projet Sonata en production a besoin de correctifs, de montées de version et d'évolutions régulières. C'est le cœur de notre service TMA.
Reprendre un projet Sonata legacy, auditer la dette technique et construire un plan d'évolution réaliste.
La destination naturelle de migration depuis Sonata : un framework back-office moderne, maintenu et documenté par SmartBooster.
FAQ
Les réponses à vos questions
Et si vous ne trouvez pas ce que vous cherchez, nous serons ravis de vous répondre en direct lors d'un rendez-vous entre humains !
Oui, Sonata AdminBundle est toujours maintenu. La version 4.x reçoit des correctifs et reste compatible Symfony 5 à 7. Cela dit, le rythme des contributions tierces a significativement ralenti depuis 2022. Le cœur du bundle est stable, mais l'écosystème de bundles complémentaires (SonataMediaBundle, SonataUserBundle…) se met à jour moins régulièrement. Nos projets Sonata en production tournent sans problème, mais nous conseillons d'anticiper une migration pour les projets prévus sur 5 ans ou plus.
Oui, Sonata a une courbe d'apprentissage plus élevée que la moyenne des bundles Symfony. L'architecture repose sur des concepts propres (Admin class, DatagridMapper, FormMapper, ShowMapper, routes imbriquées) qui demandent plusieurs jours de prise en main pour un développeur Symfony expérimenté. La documentation est complète mais dense. C'est pour cette raison qu'il vaut mieux le réserver aux équipes qui ont déjà une base Sonata en place, ou qui s'engagent sur un projet de longue durée où l'investissement initial sera amorti.
Pour un nouveau projet démarré aujourd'hui, nous recommandons EasyAdmin Bundle plutôt que Sonata. EasyAdmin offre une configuration PHP moderne, une courbe d'apprentissage significativement plus courte, une intégration Symfony 6/7 native et un mainteneur membre de la Symfony Core Team. Sonata reste pertinent si votre équipe le maîtrise déjà et a des processus rodés ou si le projet requiert des fonctionnalités avancées comme les ACL par objet ou les child admins imbriqués, que Sonata gère mieux nativement.
Vous avez un projet ?
Contactez-nous pour savoir comment nous pouvons vous aider.