Bonjour à vous,
j'ai un problème pour rendre une route réciproque sur cake.
J'ai suivi la formation vidéo sur le routing et dans le cookbook de cake l'exemple est identique :
routes.php :
Router::connect('/tt/:id-:slug',
array('controller' => 'pages', 'action' => 'index',
array('pass' => array('id','slug'), 'id' => '[0-9]+')));
vue.ctp :
echo $this->Html->link('Mon lien',array('controller' => 'pages',
'action' => 'index',
'id' => '3' ,
'slug' => 'article'));
Si j'accède à la page http://www.monsite.com/tt/3-article => ça fonctionne
Mais le lien généré par ma vue me retourne : http://www.monsite.com/pages/index/id:3/slug:article ce qui me pose un gros problème de traitement.
Si vous avez une idée pour me porter secours, ça serait vraiment sympa, et je vous remercie d'avance.
Merci à l4p1n0u, qui m'a aidé sur irc ...
j'ai fais une erreur de parenthèse sur ma règle :
Router::connect('/tt/:id-:slug', 'controller' => 'pages', 'action' => 'index'], 'id' => '[0-9]+', 'slug' => '[a-z0-9\-]+', 'pass' => 'id', 'slug']]);
en changeant la présentation ça m'a permis de voir mon erreur
Essaye en rajoutant dans ton Router::connect
'slug' => '[a-zA-Z0-9\-._=]+'
aprés
'id' => '[0-9]+'
Merci GyZmO pour ta réponse,
j'ai essayé cette option, et ça ne fonctionne pas non plus, j'ai même essayé sans slug, et ça ne marche pas non plus.
par contre cette route fonctionne dans les deux sens :
Router::connect('/', array('controller' => 'pages', 'action' => 'index', 'slug' => 'accueil', 'id' => '1'));
si je fais un link en passant 'slug'=>'accueil' et 'id'=>'1' j'ai bien un lien qui envoi sur la racine du site
Je suis pas sur de ça, mais dans ton routes.php, assure-toi d'avoir mis
Router::connect('/tt/:id-:slug',
array('controller' => 'pages', 'action' => 'index',
array('pass' => array('id','slug'), 'id' => '[0-9]+')));
avant la ligne
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
Si l'erreur persiste, alors c'est que ca vient de la déclaration de la route dans
echo $this->Html->link('Mon lien',array('controller' => 'pages',
'action' => 'index',
'id' => '3' ,
'slug' => 'article'));
ce qui serait bizarre car elle me parait bonne :x !
Moi aussi je trouve cela bizarre, j'ai cherché longtemps sur toutes les manières d'écrire ces bouts de codes.
J'ai essayé ma route en ne laissant que celle que j'ai déclaré, toutes les autres routes je les ai supprimé, et c'est toujours pareil.
Je suis entrain de tout migrer sur une autre version de PHP et si ça persiste je "downgraderai" la version de cake (j'ai mis la version 2.5.5) parceque je n'ai pas que ça comme problème bizarre : la fonction debug() ne fonctionne pas tout le temps :s , mais ça c'est un autre sujet