Tri de données avec sylius/resource-bundle

30 Oct 2013

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 resourceavec 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.

comments powered by Disqus