Bundles
Introduction en vidéo :
Un bundle est une librairie PHP spécifique à Symfony. Comme toute librairie, un bundle permet d'ajouter des fonctionnalités à votre application, mais en l'intégrant dans vos outils de travail de Symfony (par exemple : ajout de fonctions pour Twig, pour Doctrine, etc.) et évite d'avoir à re-coder des éléments que l'on retrouve d'un projet à l'autre.
Pour en trouver de nouveaux, vous pouvez utiliser plusieurs sources :
- La documentation de Symfony sur le sujet
- Une recherche sur GitHub
- Une recherche Internet sur la fonctionnalité que vous cherchez (pagination, administration, etc.)
- Des articles partagés sur le net
- Des collègues
- etc.
En général, le plus important est de suivre la documentation fournie par le bundle (elle est la seule à faire foi) pour l'installation, la configuration et l'utilisation. Je vais énoncer ici quelques éléments génériques pouvant servir pour tous les bundles.
Installer un bundle
Normalement, l'installation se fait via composer, avec une commande comme composer require nom-du-vendor/nom-du-bundle
.
Certaines documentations indiquent de modifier un fichier app/AppKernel.php
, ce n'est nécessaire que si vous n'utilisez pas Symfony Flex (et normalement, depuis Symfony 3.4, vous utilisez Symfony Flex) et vous devriez pouvoir l'ignorer.
Lors de l'installation, il peut toutefois être utile de vérifier le fichier config/bundles.php
, pour vous assurer que votre bundle est bien appelé (ce qui devrait être fait automatiquement lors de l'installation).
Configurer un bundle
Lors de l'installation, si votre bundle fourni une configuration, vous devriez avoir un fichier portant le nom du bundle dans le dossier config/packages/
. Si ça n'est pas le cas et que vous devez créer le fichier, il faut le nommer comme la racine du YAML.
La documentation m'indique une configuration comme ceci :
knp_paginator:
# ... contenu de la configuration ...
Je vais alors devoir créer un fichier config/packages/knp_paginator.yaml
pour contenir ma configuration.
Utiliser un bundle
Dans cette section, je n'ai littéralement rien à dire, puisque tout dépend du bundle que vous avez installé 😉 .
Exemples de bundles utiles
- ApiPlatform vous permet de créer une API rapidement dans votre Symfony, à partir de vos entités.
- EasyAdmin pour générer un espace d'administration pour vos entités
- Doctrine extensions pour ajouter des comportements à vos entités (
Timestampable
,Sluggable
,Translatable
, etc.). La documentation vers les différents comportements : https://github.com/doctrine-extensions/DoctrineExtensions/tree/main/doc - VichUploader pour mettre en ligne et gérer des images liées à vos entités
- Knp Paginator pour gérer la pagination de vos listes
- Knp Menu pour gérer vos menus sous forme d'objets propres
- A2lixTranslationFormBundle pour ajouter des champs de gestion de traduction
Pour un exemple d'installation et d'utilisation d'un bundle, je vous recommande la section suivante, traitant de EasyAdminBundle.