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