Problème de pagination avec PagerFanta

Pagerfanta est une librarie que l’on ne présente plus tellement elle est devenu un standard pour mettre en oeuvre la pagination dans des projets PHP ou Symfony. Cependant, un petit manque de robustesse dans l’API m’a fait perdre une belle demi-journée. En effet, la pagination est bloqué à 10 quelques soit le nombre de résultat par page que j’indiquais, explications.

<?php
$items = new Pagerfanta(
    new LocationSearchAdapter($query, $this->searchService)
);
$items->setCurrentPage($page);
$items->setMaxPerPage($maxPerPage);

A première vue, tout à l’air normal, cependant dans cette configuration, la pagination se fait par pas de 10 quelque soit la valeur de $maxPerPage. Pour que le code fonctionne, il faut impérativement que l’ordre des instructions soit le suivant :

<?php
$items = new Pagerfanta(
    new LocationSearchAdapter($query, $this->searchService)
);
$items->setMaxPerPage($maxPerPage);
$items->setCurrentPage($page);

La raison c’est que setMaxPerPage est plus qu’un setter, il ré-initialise d’autres variables https://github.com/whiteoctober/Pagerfanta/blob/master/src/Pagerfanta/Pagerfanta.php#L158

comments powered by Disqus
A la une
  • Rencontre du numérique 2019 - Nîmes
  • référencement naturel d'un hôtel
  • Développeur eZ Platform
  • Tech lead Symfony
  • Expert Qualité Web

Copyright - Sylvain FIX

2009 - 2019