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 ;)

1 réponse


Rastaf86
Auteur
Réponse acceptée

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'
            ));