Dans cet article je vais vous montrer comment trier un tableau en utilisant simplement la configuration du resource-bundle de Sylius et un helper twig.
Pré-requis: pour ajouter un tri sur un tableau avec Sylius, vous aurez besoin d'une resource
configuré correctement en suivant la documentation du resource
bundle.
Pour les personnes qui n'ont pas envie d'aller voir la documentation, j'ai repris dans le gist ci-dessous la configuration de ma resource
. On définit simplement que l'on a une resource app.book
qui correspond à mon entité doctrine Book
et que les différent template pourront être retrouvé dans AppBookBundle:Book
. Vous pouvez retrouver plus d'informations sur la configuration d'une resource
avec Sylius dans documentation.
Dans le second gist (le fichier de routing), on retrouve une route classique, la partie qui nous intéresse ici se trouve en dessous du _sylius
. On décrit deux possibilitées de tri indépendante l'une de l'autre, la première en utilisant sortable
permet d'indiquer a sylius que la liste de livres peut être triée par l'utilisateur en utilisant comme paramètre d'url sorting[column]=asc
. la seconde en utilisant sorting
ici on peut indiquer une liste de colonnes de tri qui sera utilisé pour le tri par défaut.
L'utilisation de cette seconde possibilité est plutôt bien documentée dans la page Sorting collection or paginator. Cette option transmet simplement un tableau de couple colonne-ordre aux méthodes findBy
et createPaginator
que l'on peut retrouver dans la méthode indexAction du fichier ResourceController.php.
Dans le dernier fichier, i.e. le fichier de template twig on utilise l'helper sylius_resource_sort
qui ajoute simplement un lien dans l'en-tête du tableau, le code de cet helper peut être trouvé dans la class SyliusResourceExtension.php.