Créer un composant Symfony UX DataTable générique permettant d’afficher une liste de données avec
:
Le composant doit être démontré sur la page /home avec des données fictives.
La démonstration doit utiliser un flux complet :
Controller → Twig → Symfony UX Component → Preline UI → HTML
Uniquement si nécessaire :
Le composant doit accepter une configuration générique.
Exemple d’utilisation attendue :
<twig:DataTable
title="Utilisateurs de démonstration"
:columns="userTable.columns"
:rows="userTable.rows"
:actions="userTable.actions"
:filters="userTable.filters"
/>
Les données doivent venir du contrôleur.
Exemple :
$userTable = [
'columns' => [
[
'key' => 'name',
'label' => 'Nom',
'sortable' => true,
],
[
'key' => 'email',
'label' => 'Email',
'sortable' => true,
],
[
'key' => 'status',
'label' => 'Statut',
'sortable' => true,
],
[
'key' => 'role',
'label' => 'Rôle',
'sortable' => false,
],
],
'rows' => [
[
'id' => 1,
'name' => 'Admin Demo',
'email' => 'admin@example.test',
'status' => 'Actif',
'role' => 'Administrateur',
],
[
'id' => 2,
'name' => 'User Demo',
'email' => 'user@example.test',
'status' => 'En attente',
'role' => 'Utilisateur',
],
],
'actions' => [
[
'label' => 'Voir',
'route' => 'app_account',
'icon' => 'bi:eye',
'variant' => 'secondary',
],
[
'label' => 'Modifier',
'route' => 'app_account',
'icon' => 'bi:pencil',
'variant' => 'primary',
],
],
'filters' => [
[
'name' => 'status',
'label' => 'Statut',
'type' => 'autocomplete',
'placeholder' => 'Filtrer par statut',
'choices' => [
'Actif',
'En attente',
'Inactif',
],
],
],
];
return $this->render('home/index.html.twig', [
'userTable' => $userTable,
]);
Le composant DataTable doit gérer :
Les colonnes configurées avec :
'sortable' => true
doivent afficher un indicateur visuel de tri.
Le composant doit prévoir les paramètres :
sort
direction
via query string.
Exemple attendu :
/home?sort=name&direction=asc
Le tri peut rester démonstratif sur les données fournies par le contrôleur.
Aucune persistance n’est attendue.
Le composant doit afficher :
Les filtres peuvent rester démonstratifs.
Aucune requête AJAX n’est obligatoire pour cette task.
Symfony UX Autocomplete est déjà installé dans le starter.
Si Symfony UX Autocomplete nécessite une intégration plus poussée, prévoir une structure HTML propre et documenter la limite.
Chaque ligne doit afficher les actions configurées.
Les actions doivent être générées depuis la configuration PHP.
Le Twig ne doit pas hardcoder :
Exemple attendu :
{% for action in actions %}
...
{% endfor %}
Le rendu doit respecter :
Si rows est vide, afficher un état vide clair :
Aucune donnée disponible.
avec une icône et un style cohérent.
Afficher une pagination simple en bas du tableau.
Pour cette task, la pagination peut être visuelle/démonstrative.
Aucune logique serveur complète n’est requise.
Toute logique réutilisable doit être dans DataTable.php.
Le Twig doit rester principalement déclaratif.
Préférer des méthodes comme :
getColumns()
getRows()
getActions()
getFilters()
getSortUrl()
getDirectionForColumn()
getActionClasses()
getFilterClasses()
getEmptyState()
Éviter les longues conditions Twig.
Mettre à jour le test fonctionnel de /home.
Tester :
/home répond avec succès ;Exécuter :
make npm-build
make phpstan
make lint-twig
make test
À la fin, fournir :
How can I help you explore Laravel packages today?