Accueil /  Blog / Symfony / Des filtres enregistrés dans vos admins Sonata

Des filtres enregistrés dans vos admins Sonata

Publié le jeudi 7 décembre 2023

Le PrestaSonataSavedFiltersBundle est un bundle Symfony qui permet de gérer des filtres enregistrés pouvant être appliqués aux listes des admins Sonata afin de les restaurer dans un état précis.
Il s'intègre aux écrans de liste via un menu situé en haut à droite de l'écran, et dispose d'une admin permettant de partager ou protéger les filtres enregistrés avec d'autres utilisateurs.
Simple d'installation et d'utilisation, il permet de proposer à vos utilisateurs des vues personnalisées préconfigurées.

Sonata est un générateur d'admin bien connu dans l'écosystème Symfony.

Entre autres fonctionnalités, il fournit un système de filtres bien pratique pour effectuer des recherches dans une liste de résultats.

Chez PrestaConcept, nous avons développé un bundle permettant de gérer des filtres enregistrés.

Voici en quelques lignes comment il fonctionne...

Fonctionnement

Une fois le PrestaSonataSavedFiltersBundle installé et configuré, vous aurez accès à un menu supplémentaire depuis la page liste de chaque admin.

Les filtres enregistrés auxquels vous avez accès y apparaîtront selon les critères suivants :

  • vous avez créé le filtre
  • vous avez mis le filtre en favori
  • le filtre est public

Vous pourrez gérer ces filtres depuis l'admin Sonata dédiée.

Le bundle est prévu pour supporter plusieurs langues et est actuellement traduit en français et en anglais.

Création d'un filtre enregistré

Dans le nouveau menu situé en haut à droite de chaque liste, vous trouverez une action vous permettant d'enregistrer l'état actuel de votre liste, incluant ainsi les filtres Sonata appliqués ainsi que les critères de tri.

PrestaSonataSavedFiltersBundle - Save filter form

Après l'avoir nommé et enregistré, vous retrouverez votre filtre en tant qu'élément du menu, et le sélectionner restaurera l'état de la liste au moment où vous l'aviez créé.

PrestaSonataSavedFiltersBundle - Saved filters dropdown

Administration des filtres

Le bundle fournit également une admin dédiée à la gestion des filtres. Vous y retrouverez la liste des filtres enregistrés existants, ainsi que des actions spécifiques.

PrestaSonataSavedFiltersBundle - Saved filters admin list

  • Protéger : permet de s'assurer qu'un filtre enregistré ne pourra pas être supprimé
  • Retirer la protection : autorise à nouveau la suppression du filtre enregistré
  • Rendre public : tous les utilisateurs verront le filtre enregistré apparaître dans le menu et pourront l'utiliser
  • Ajouter aux favoris : s'abonner au filtre enregistré afin de le voir apparaître dans le menu, même s'il n'est pas public
  • Retirer des favoris : se désabonner du filtre enregistré afin qu'il n'apparaisse plus dans le menu

Suppression d'un filtre enregistré

Il n'existe pas d'action de suppression à proprement parler. Un filtre enregistré sera automatiquement supprimé si plus personne ne l'a ajouté à ses favoris et s'il n'est pas protégé.

Autrement dit, un filtre enregistré non protégé sera supprimé lorsque la dernière personne à l'avoir ajouté à ses favoris l'en retirera. Ce sera également le cas pour un filtre protégé que personne n'a ajouté à ses favoris et dont on viendrait retirer la protection.

Installation

Le code source du PrestaSonataSavedFiltersBundle est hébergé sur GitHub.

Le bundle peut être installé simplement en exécutant la commande suivante :

composer require presta/sonata-saved-filters-bundle

Une fois installé, il vous suffira de suivre les quelques étapes de configuration suivantes qui sont détaillées dans le README du projet :

  • importer les scripts JS du bundle
  • inclure le menu dans le layout Sonata
  • configurer Doctrine pour lui renseigner l'entité qui va pouvoir créer et ajouter des filtres enregistrés en favoris (généralement une entité implémentant UserInterface)
  • ajouter l'entrée de menu pour l'admin des filtres enregistrés à votre config Sonata
  • mettre à jour le schéma de votre base de données pour inclure les entités du bundle

Utilisation

Nous espérons que, comme nous, vous apprécierez le confort offert par ce système.

Désormais si un client vous demande des vues personnalisées pour une admin, vous pouvez très facilement lui en préconfigurer en créant des filtres enregistrés publics. Si toutefois ces vues préconfigurées ne lui suffisent pas, ou si un utilisateur a un besoin spécifique, il pourra tout aussi facilement se créer les siennes comme il l'entend, et même les partager lui-même à ses collègues.

N'hésitez pas à nous faire des retours si vous avez des remarques, voire à contribuer directement au repository sur GitHub.

Suivez notre actualité en avant première. Pas plus d’une newsletter par mois.