Bonjour, je début tout juste avec CakePHP, je suis le Tuto (1er jour).
Version : 2.6.1.

J'ai un soucis avec l'écriture des URL, j'ai configuré le fichier routes.php pour avoir une URL "propre", mais il me ressort toujours ceci :
http://localhost/cakephp/Pages/show/slug:ma-premiere-page/id:1

Je voudrais que show ne s'affiche pas (d'ailleurs je ne comprends pas pourquoi il est là?), et enfin que slug: et id: non plus.
J'ai suivis le tuto pas à pas, vérifié, re re re vérifié, je ne comprends pas ce qu'il cloche. A l'étape ou je suis, normalement l'url devrait être propre.

Pour le code dans routes.php :

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

    Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));

Code dans 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; ?>

Et code dans PagesController.php :

<?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($this->request);
    }
}

?>

Si vous pouvez éclairer ma lenterne :-)

Merci,

Marie

2 réponses


Woozim
Réponse acceptée

Salut, change id et slug dans ton tableau pass. l'ordre a une importance: http://book.cakephp.org/2.0/fr/development/routing.html#passer-des-parametres-a-l-action

Tiens Zikembar c'est drôle de te retrouver ici ;)
Ah oui j'ai interverties deux lignes dans mon index, et ça fonctionne.
Merci bien :)