veilletech.fr
22 sept. Feed du jour
#03 SYMFONY Article

Symfony UX 3.5 : la pagination, et des tests à revoir

La pagination tant attendue arrive enfin. Avec elle, un rendu qui change assez pour faire rougir votre CI.

Symfony UX 3.5 livre `symfony/ux-pagination`, un paginateur sans JavaScript à trois stratégies, ainsi que le support de Twig 4. Le rendu des attributs de composants passe désormais par Twig : le HTML produit change pour les booléens, `null`, `aria-*` et les tableaux, ce qui fait échouer les tests qui comparent ce rendu.

3 min de lectureintermédiairevidéo 1:19
Partager
Sommaire6 sections
  1. Ce qui se passe
  2. La pagination, enfin
  3. Le changement qui casse vos tests
  4. Le reste de la version
  5. Comment s'y prendre
  6. À retenir

Ce qui se passe

Symfony UX 3.5 est sorti le 21 septembre 2026, avec près de quatre-vingt-dix pull requests fusionnées depuis la 3.4 — l'une des plus grosses versions du projet selon ses mainteneurs. Deux points dominent : un composant de pagination, réclamé depuis des années, et un changement de rendu qui touche tous les composants Twig.

La pagination, enfin

symfony/ux-pagination, contribué par Simon André, pagine un tableau, une requête Doctrine ORM ou DBAL, ou toute source placée derrière un PaginatorInterface qui lit la requête HTTP. PHP construit la requête, Twig rend une navigation accessible, et le navigateur suit de simples liens — ni Stimulus, ni Turbo, ni JavaScript.

Trois stratégies, à choisir selon ce que la page doit garantir :

Stratégie Quand l'utiliser
Numérotée Il faut un total exact et des numéros de page
Lookahead Un lien « suivant » fiable suffit : pas de requête COUNT
Curseur bidirectionnel Les lignes bougent pendant que l'utilisateur navigue

Le composant <twig:ux:pagination> est livré avec des thèmes par défaut, Bootstrap et Tailwind, des traductions en dix langues, une sérialisation JSON et une intégration LiveComponent optionnelle via ComponentWithPaginationTrait. Le bundle est expérimental : l'API peut encore bouger.

Le changement qui casse vos tests

ComponentAttributes avait sa propre logique de rendu des attributs, partielle et parfois invalide : exception sur null, aria-* à false supprimé, booléen true rendu nu, exception sur les tableaux et les enums. Hugo Alliaume l'a remplacée par celle de html_attr(), que Twig maîtrise depuis sa 3.24 ; c'est la 3.29 qui a exposé la brique nécessaire. {{ attributes }} et attributes.render() produisent désormais exactement ce qu'un template Twig ordinaire produirait.

L'application ne casse pas, mais les tests qui comparent le HTML rendu échouent : booléens, null, aria-* et valeurs non scalaires sortent autrement. ux_icon(), <twig:ux:icon>, ux_map() et <twig:ux:map> suivent le même chemin. En prime, UX Icons corrige un défaut d'accessibilité : un aria-label, aria-labelledby ou title omis empêchait l'ajout automatique de aria-hidden="true", laissant l'icône ni décrite ni masquée.

Autre changement de balisage : l'analyse SVG passe de \DOMDocument à \Dom\XMLDocument, l'API de PHP 8.4, qui conserve l'attribut xmlns que l'ancienne perdait sur les icônes locales.

Dépendances requises pour ce nouveau rendu : twig/twig 3.24 ou plus et twig/html-extra 3.29 ou plus.

Le reste de la version

Comment s'y prendre

  1. Monter twig/twig et twig/html-extra aux versions requises.
  2. Lancer la suite de tests et régénérer les assertions qui portent sur le HTML des composants, icônes et cartes.
  3. Vider le cache des icônes après la mise à jour.
  4. Tester ux-pagination sur une page non critique, le temps qu'il sorte de l'expérimental.

Source : Symfony UX 3.5 released, blog Symfony, 21 septembre 2026.