====== Affichage d'une arborescence ====== Voici une arborescence constituée d'une entité Catégorie ayant les propriétés suivantes : * **parent** : catégorie mère (null pour une catégorie de niveau supérieur) * **enfants** : collections de catégories filles (peut être vide) * **ordre** : entier représentant l'ordre de tri des catégories dans une liste Dans le contrôleur, on récupère d'abord toutes les catégories de niveau supérieur, c-à-d celles dont le parent est ''null''. public function categories(CategoriesRepository $repo) { // Lire toutes les catégories de niveau supérieur $categs = $repo->findByParent(null); // Envoyer ces catégories au template Twig return $this->render('mon_controleur/liste_categories.html.twig', [ 'categories' => $categs ]); } Le code **Twig** ci-dessous utilise une macro qui sera appelée récursivement pour afficher les catégories et leurs enfants. À chaque boucle ''for'', les élements sont triés (filtre ''sort'') sur base de leur propriété ''ordre''. {% extends 'base.html.twig' %} {% macro afficheCateg(categorie) %} {% endmacro %} {% block body %}

Catégories

{% for categorie in categories | sort((a, b) => a.ordre <=> b.ordre) %} {{ _self.afficheCateg(categorie) }} {% endfor %} {% endblock %}