PagerFanta et l’erreur « array_merge() »

PagerFanta est un Bundle pour Symfony 2 qui permet de paginer l’affichage de collections. Il est assez simple d’utilisation, mais il est courant de rencontrer l’erreur suivante :

"Warning: array_merge() [<a href='function.array-merge'>function.array-merge</a>]: Argument #2 is not an array in /path/to/my/project/vendor/bundles/WhiteOctober/PagerfantaBundle/Twig/PagerfantaExtension.php line 73") in MaBoite\/MonBundle\/Resources\/views\/MonControlleur\/index.html.twig at line XXX.

Ce message apparait lorsque l’on a installé une mauvaise version de PagerFanta. Les sources disponibles par défaut sur GitHub suivent la branche master de Symfony, qui avance actuellement sur la version 2.1 du Framework.

Il est très probable que la version Symfony sur laquelle vous travaillez soit une 2.0.XX (dernière version stable au moment où j’écris ces lignes). Il faut donc utiliser la branche symfony2.0 de PagerFanta. Si vous installez les sources directement par copier/coller (déconseillé), remplacez simplement les sources master par celles de la branche symfony2.0. Si vous installez le bundle via le fichier deps (recommandé), il vous faut utiliser les lignes suivantes.

[PagerFanta]
 git=http://github.com/whiteoctober/Pagerfanta.git
 target=pagerfanta
[PagerFantaBundle]
 git=http://github.com/whiteoctober/WhiteOctoberPagerfantaBundle.git
 target=bundles/WhiteOctober/PagerfantaBundle
 version=origin/symfony2.0

Lancez ensuite simplement la commande pour installer les vendors.

bin/vendors install

Attention ! Si vous aviez déjà installé la version master de PagerFanta via le fichier deps, celle ci est probablement verrouillée. Il vous faudra alors supprimer la ligne PagerFantaBundle dans le fichier deps.lock avant de lancer l’installation.