Problème de routing

Par Elearner1, il y a 12 ans


Bonjour,
J'ai un problème de routing,
J'ai un controller forum qui a une action view et voici le routing pour celle-ci qui fonctionne bien.

Router::connect('/forum/:slug-:id', array('controller'=>'forum','action'=>'view'),array('pass'=>array('id','slug'), 'id'=>'[0-9]+', 'slug'=>'[a-z0-9\-]+'));

Dans cette vue J'affiches aussi les reponses à ce sujet, ainsi j'ai aussi paginer les reponses mais voici le format actuel des urls de pagination des reponses

/forum/view/7/this-is-a-question/page:2

mais moi J'aimerai un format du genre

/forum/this-is-a-question-7/page/2

Merci

5 réponses

Kareylo, il y a 12 ans

essaies comme ceci :

Router::connect('/forum/:slug-:id/*', array('controller'=>'forum','action'=>'view'),array('pass'=>array('id','slug'), 'id'=>'[0-9]+', 'slug'=>'[a-z0-9\-]+'));
Mikachu, il y a 12 ans

Tente:

Router::connect('/forum/:slug-:id/page/:page', array('controller'=>'forum','action'=>'view'),array('pass'=>array('id','slug'), 'id'=>'[0-9]+', 'slug'=>'[a-z0-9\-]*', 'page'=>'[0-9]+'));
Elearner1, il y a 12 ans

Merci à vous Kareylo et mikachu! J'ai essayé vos deux propositions mais ça ne marche pas J'ai toujours le même format.

Pewel-OutOfNutella, il y a 12 ans

Ca c'est la route, mais est ce que tu as changé le lien sur ta vue ?

Je sais pas trop comment expliquer ça, mais en gros le router ne fait que "capter" l'url et y associe une action. Donc de l'autre côté, il faut que tu t'arranges pour que quand on clique sur un lien, ça prenne la forme de cette url-là.

Parce que ce que t'ont donné Kareylo et Mikachu, ça fonctionne.

Elearner1, il y a 12 ans

Merci pour ta reponse Pewel,J'ai trouvé la reponse à mon problème.

J'ai trouvé ces lignes de code sur un site à ajouter dans ma vue 'view.ctp'

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

et Je l'ai modifié comme ça,

<?php $this->Paginator->options(array
            ('url'=> array(
                'controller' => 'forum', 
                'action' => 'view',
                'id'=>$forum'Forum']'id'],
                'slug'=>$forum'Forum']'slug']
   ))); ?>

et ça fonctionne très bien.
Merci.