Bonjour à tous,
je rencontre actuellement un problème de liens (que j'aimerais changer) avec le PaginatorHelper de CakePhp.

J'ai réussi à paginer mes pages de manière à pouvoir remplacer "page:2" par "posts/p-2" dans mes routes. Lorsque j'entre l'adresse à la main, tout se passe pour le mieux.

Seulement, lorsque je souhaite changer de page directement grâce au helper configuré comme suit :

<?= $this->Paginator->numbers(array(
  'tag' => 'li', 
  'separator' => false, 
  'currentClass' => 'active', 
  'currentTag' => 'a',
  'modulus' => 3)); ?>

je me retrouve avec l'adresse standard des pages "/posts/page:2/sort:Post.created/direction:DESC".

Est-ce qu'il y a une façon simple de contourner ces liens et de réécrire leur logique ? Parce que pour l'instant, en cherchant je n'ai rien trouvé de très concluant.

Merci d'avance.

2 réponses


Ptolam
Auteur
Réponse acceptée

Tout d'abord, merci pour la réponse rapide.

Après une bonne heure d'essais, je n'ai rien pu modifier. Je me suis même tourné vers BeautyPaginator, sans plus de succès (même si, dans le principe, les liens étaient bien réécrits).
Le problème reste le même.

Voici ce que j'utilise :

Router::connect('/:page',
  array('controller' => 'editor', 'action' => 'index'), 
  array('page' => '[0-9]+')
);

$this->Paginator->options(array('url' => array(
  'controller' => 'editor',
  'action' => 'index',
  'page' => $this->params'page']
)));

if(!empty($this->request->params'page'])){
  $this->request->params'named']'page'] = $this->request->params'page'];
}

Le lien des pages, quand j'en change via le helper, reste le même : "/editor/index/page:1/sort:Post.created/direction:DESC"

Edit : Je pense avoir trouvé une solution grâce à BeautyPaginator. Même si elle me semble un peu bâtard, elle fonctionne.

Bonjour, dans ta vue, tu dois donner un peu d'infos au paginatorhelper

$this->Paginator->options(array('url' => array(
        'controller' => 'posts',
        'action' => 'monaction',
        'slug' => $this->params'slug'],
        'id' => $this->params'id']
    )));