premièrement:
je pense que la fonction devrait être modifiée en ceci:
function show($id = null){
if(!$id)
throw new NotFoundException('Aucune page ne correspond à cet ID');
$page = $this->Post->find('first',array(
'conditions' => array('type'=>'page')
));
if(empty($page))
throw new NotFoundException('Aucune page ne correspond à cet ID');
$d'page'] = current($page);
$this->set($d);
}
ca c'est de 1
secondement:
le problème c'est par defaut n'a pas dans ces templates la vue show (il y a les index,view,edit, add et les même fonctions préfixées par admin_)
donc cet appel viens de ton router, il faudrait donc également que tu enlèves la ligne qui aiguilles vers la vue/action show et garder quelquechose par défaut (en rajoutant tes routes persos)
app/Config/routes.php
/**
* ...une ligne de route perso -> ici pour www.exemple.com/recherche
*/
Router::connect('/recherche', array('controller' => 'posts', 'action' => 'recherche'));
/**
* ...une autre route perso -> ici pour www.exemple.com/connect
*/
Router::connect('/connection', array('controller' => 'users', 'action' => 'login'));
/**
* ...les routes par defaut (page de base/home et l'affichage des pages que moi j'appelle statique genre y a pas trop de logique dedans)
*/
Router::connect('/', array('controller' => 'pages', 'action' => 'display','home'));
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
troisièmement:
Il reste la dure tache de faire un tour dans tes vue et d'enlever les accès à la vue/action show
<?php echo $this->Html->link('<span>'.$v'name'].'</span>',$v'link'],array('escape' => false)); ?>
et laisser ceci
<?php echo $this->Html->link('<span>'.$v'name'].'</span>', array('controller'=>'TONMODEL', 'action'=>'view', $v'id']), array('escape'=>false)); ?>
Remarques:
C'est un avis perso, vu que je penses que le slug c'est vachement bien (même niveau SEO) tu aurais pu également une fois que tu récupère l'id grâce au slug faire une redirection en te basant sur l'id
De plus pour ce qui est de la fonction show j'ai oublié de précisé que si tu as changé tes liens et donc ne sollicite plus cette ligne de route (relié au slug) tu peut carrément effacer les deux (la ligne dans routes.php et la fonction show() dans PostsController.php)
J'espère que cela répond à ta question
Bonne continuation