Bonjour,
Je reviens vers vous, car l’heure est grave, le rooting ne marche, adieu performance en SEO, visibilité numérique ! trêve de plaisanterie. Tout simplement je suis bloqué, et je ne trouve pas la solution à mon problème .
L’enjeu est assez simple, je ne souhaite rien de compliquer, seulement faire passer des paramètres nommés dans mes url.
Voici la situation :
J’ai un controller : ProjetsController avec une action View
ProjetsController.php
Code :
public function view( $id = null , $slug = null) {
….
}/*END function view()*/
Exemple de lien sur une page pour accéder à ma page
Code:
echo $this->Html->link('En savoir plus',array(
'controller'=>'Projets',
'action'=>'view',
$id ,
$slug
);
Et ma route dans mon fichier routes.php
Code:
Router::connect(
'/projet/:id-:slug',
array('controller' => 'Projets', 'action' => 'view'),
array(
'pass'=> array('id','slug'),
'id'=>'[0-9]+',
'slug' =>'[a-z0-9\-]+')
);
Variante basique qui change l'url, mais qui ne me convient pas
Code:
Router::connect(
'/projet/*',
array('controller' => 'Projets', 'action' => 'view'),
array(
'pass'=> array('id','slug'),
'id'=>'[0-9]+',
'slug' =>'[a-z0-9\-]+')
);
Lorsque je réalise un
debug($this->request->params) ;die() ;
J’obtiens lorsque je tente d’accéder à la page via mon lien j’obtiens ce résultat
Code:
array(
'plugin' => null,
'controller' => 'Projets',
'action' => 'view',
'named' => array(),
'pass' => array(
(int) 0 => '29',
(int) 1 => 'ismael-photographe-professionnel'
)
)
Et mon url reste de cette forme :
URL:
[siteurl]/Projets/view/29/ismael-photographe-professionnel
Dans le cas ou je met ma variante dans le fichier route.php
URL:
[siteurl]/projet/29/ismael-photographe-professionnel
J’ai lu la doc, revisionné la vidéo de Graf sur le rooting, mais rien à faire, je ne trouve pas mon erreur !
Please help ! Merci d’avance ;)
Bon ba voilà, j'ai trouvé, le problème se trouvait dans mon lien, où mes variables étaient passé de manière brut alors qu'elle devaient l'^tre sous forme d'un tableau
echo $this->Html->link('En savoir plus',array(
'controller'=>'Projets',
'action'=>'view',
'id'=>$id ,
'slug'=>$slug
),array(
'class'=>'projet--item--link'
));
au de de ça !
echo $this->Html->link('En savoir plus',array(
'controller'=>'Projets',
'action'=>'view',
'$id ,
$slug
),array(
'class'=>'projet--item--link'
));