Bonjour à tous.

Alors voilà, je suis en train de suivre le tuto en vidéo et jusque la tout marchait. Mais, à la 24min 44s, lorsque j'ajoute une route, celle-ci:

Router::connect('/page/:slug-:id', array('controller' => 'pages', 'action' => 'show'), array('pass'=> array('id','slug')));

Ca marche :)

Mais si je continue et donc ajoute des conditions soit,

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

Ca ne marche plus, et me redonne l'URL: "pages/show/slug:ma_premiere_page/id:1" au lieu de "age/ma_premiere_page-1" :(

Je ne comprend pas j'ai tous vérifé..

Dans pageController.php j'ai:

<?php
class PagesController extends AppController{
    public $uses = array('Post');
    function index(){
        $d'page'] = current($this->Post->find('first',array('conditions' => array('type' => 'page'
                                               ))));
        $d'pages'] = $this->Post->find('all',array('conditions' => array('type' => 'page')));
        $this->set($d);
    }

    function show($id = null,$slug = null){
        debug($id);
        debug($this->request);
    }
}

et dans mon dossier page dans le fichier index.ctp:

<?php foreach($pages as$k=>$v): $v = current($v); ?>
    <?php echo $this->Html->link($v'name'],array('action'=>'show','slug'=>$v'slug'],'id'=>$v'id'])); ?>
<?php endforeach; ?>

Quelqu'un pourrait m'éclairer? Merci :)

1 réponse


Je sais pas si je déterre un vieux post mais je répond quand même. Je ne sait pas si ça viens de la mais "ma_premiere_page" ne vérifie pas la condition [a-z0-9-]+ car il contient _ donc il faut soit faire Inflector::slug($titre,**'-'**) soit remplacer [a-z0-9-]+ par [a-z0-9**_**]+