Laravel 5

Formulaires complexes : les vues index (questions et expériences)

Avatar de bdfi
bdfi

Bonjour

(nota : en fait en plus de mes questions, je me dit que le sujet peut être utile à d'autres s'il permet de comparer nos expériences...).

Récap des solutions possibles (je compléterai le panel des solutions avec ce que j'ai testé ou que je connais) :

Posté il y a 4 ans
Avatar de bdfi
bdfi

Mes questions en résumé :

  • Existe-t-il des packages (ou des tutoriaux) pour ajouter sur une vue index des filtres sur certaines colonnes ?
  • ou des tutoriaux complet sur ce sujet ?
  • quels sont les moyens que vous utilisez pour créer des vues index complexes ? (ou les alternatives que vous connaissez)

Je recherche des moyens de faire des IHM backend sur base de données conséquente (en nombre de tables, donc modèles), particulièrement des index, avec possibilité de tri de colonnes, et filtres sélectif. J'ai besoin : d'avoir des colonnes customisées (merger plusieurs colonnes en une, gérer du many-to-many, ou tronquer des lignes), de créer des boutons customisés par ligne, d'être capable de trier ou filtrer la table, de modifier le nombre de lignes par page à la volée, d'exporter les fichiers filtrés ou non, et si possible responsive (jusqu'à un certain point)...

Exemple :

Avec Laravel-Administrator

Pour l'instant j'utilise un package de "création/génération" automatique de backend / CRUD (pas une génération one-shot en mode console, mais automatique sur base de fichier de config), Laravel-Administrator, qui était un des meilleurs que j'avais trouvé (il y a aussi cruddy, encore plus puissant, mais moins simple et convivial à l'utilisation - pour des non-geek - à mon goût). Il gère la plupart de mes besoins (sauf la création de record d'une clef étrangère à la volée sans quitter le formulaire de création/modification). Le problème est que ce package semble vraiment à l'abandon, même le site web de l'auteur à disparu - donc pas de 5.3 ni d'évolutions (et je n'ai aucune compétences pour reprendre et faire évoluer, vu que les synchros sur la vue index sont basés sur de l'ajax/json - non seulement je ne suis pas doué, mais en plus j'ai du mal avec l'organisation du code, et le débug est pour moi un cauchemar).

D'un point de vue manuel, je sais faire des vues index simples, l'intérêt est que l'on lui donne le look qu'on veut, que la custom de colonnes est forcément faisable. J'ai réussi à y ajouter des tris de colonnes sympa avec le package kyslik/column-sortable.

Avec package de tri

Mais il manque plein de choses, notamment des filtres...

Un peu en panne de recherche, je me suis rabatu sur jquery datatable, via le package Yajra/laravel-datatables. Ultra-puissant, mais whaouh, j'ai un peu galéré pour utiliser (en mode "Datatables as a service" - les requêtes sont en ajax, mais synchro à chaque action sur la page - obligatoire pour ne pas gérer en mémoire l'intégralité des tables) et surtout pour customiser. Et malgré la puissance de DataTables plug-in + package (gestion dynamique du nombre d'élément par page, boutons pour les exports à différents formats, tri, filtre général), il y a des limitations : le filtre par colonne ne semble pas (ou difficilement) customisable (présence / type), sa présence impacte la taille des colonnes, et la customisation est mixte, via le package et via js, selon ce que l'on cherche à faire... Bref, un peu trop labyrinthique et complexe pour moi...

Avec DataTables

J'espère que je pourrai me nourrir de vos expériences :)

Posté il y a 4 ans
Avatar de bestmomo
bestmomo

Bonsoir,

Vu la gestion que tu veux faire côté client ce qui me semble le plus efficace est d'utiliser un framework JavaScript genre Angular. J'avais regardé un peu ng-admin qui semble pas mal du tout.

Posté il y a 4 ans
Avatar de bdfi
bdfi

Merci, je vais regarder ! C'est de la config js (logique, puisque framework js, je ne connais pas donc ça me fait peur :) ), et donc j'aime moins, mais je vais tester quand même et voir si ça répond à tous mes besoins ! Ce que j'aime dans laravel-administrator, c'est que bien qu'il s'agisse de requête ajax et donc présence d'un framework interne js, toute la config se fait dans des fichiers de config php laravel !

PS : je ne veux pas forcément faire côté client. Ca pourrait être

  • full server : rechargement de page complète à chaque modif de critère de filtre ou de tri ou de nombre d'éléments par page... - ce qui sous-entend alors qu'un champs filtre ne peut pas prendre les caractères à la volée en temps réel pour appliquer l'effet de filtre, et c'est moins souple et moins rapide, mais c'est acceptable
  • ou framework client mais avec requêtes server-side en ajax quand même (jquery dataTables, ou effectivement des plug-in de framework js, je n'avais pas pensé à regarder de ce côté là) oumême mixte, si ça existe (mais je ne vois pas l'intérêt).

La seule chose impossible, ce serait de charger l'intégralité des tables nécessaires et de tout gérer en local - comme jquery dataTable en mode par défaut, c'est à dire sans l'option server-side.

Posté il y a 4 ans

Vous ne pouvez pas répondre à ce sujet.