Bonjour,

Aujourd'hui j'ai été confronté à un petit souci de routes dans Cake Php lorsque il faut intéragir avec le Paginator. Comme la solution ne fut pas évidente et que peu de sources utiles sont disponible.

Voici ma solution inspiré de plusieurs blog que j'ai lu. plus particulièrement celui-ci :


Intro :

Si vous utilisez des routes personnalisé, vous aurez envie aussi de modifier l'affichage par défaut des url du paginator.

Par defaut :

  • mon.domaine.com/categorie/action/page:x

Disons que nous voudrions plutôt ceci :

  • mon.domaine.com/categorie/page:x


Explications :

Route.php :
Ajoutez cette ligne-ci dans votre fichier route.php

Router::connect('/:categorie/*',
           array('controller' => 'works',
           'action' => 'index'),
           array('pass' => array('categorie'),
                   'categorie' => '[a-z|A-Z|0-9]+')
        );
// :categorie sert de variable tampon qui ne fonctionnera que si
// 'categorie' => '[a-z|A-Z|0-9]+' voir les expressions régulière.

maView.ctp
Lorsque vous définissez la variable paginator définissez correctement ses options :

$paginator->options(array('url'=>  array(
                                          'controller' => 'works', 
                                          'action' => 'index',
                                          'categorie' => 'works'
  )));
// Ici, je règles les options pour obtenir ce résultat :
// mon.domaine.com/works/page:x

Voilà c'est pas très compliqué finallement. Ici je passe par une variable :categorie uniquement pour rester le plus flexible possible en fonction de vos structures.

Enjoy !

Denis P.