Bonjour,
je planche sur un gros probleme de routing depuis 12h,
malgrès des codes identiques pour mes routes, controller, vues et modeles, cake me génère deux liens différents :
http://localhost/cakebase/page/article-2-31
http://localhost/cakebase/truc/show/id:30/slug:page-1
Pourquoi?
Merci!
j'ai deux routes :
Router::connect('/truc/:slug-:id',
array('controller'=>'trucs','action'=>'show'),
array('pass'=> array('id','slug'))
);
Router::connect('/page/:slug-:id',
array('controller'=>'page','action'=>'show'),
array('pass'=> array('id','slug'))
);
TrucsController.php
<?php
class TrucsController extends AppController{
function index () {
$d'truc']= $this->Truc->find('all') ;
$this->set($d);
}
}
PagesController.php
<?php
class PagesController extends AppController{
function index () {
$d'page']= $this->Page->find('all') ;
$this->set($d);
}
}
model page.php
<?php
class Page extends AppModel{
public function afterFind($data,$primary = false){
foreach($data as $k=>$d){
if(isset($d'Page']'slug']) && isset($d'Page']'id']) ){
$d'Page']'link'] = array(
'controller' => 'page', //met au pluriel post ou page
'action' => 'show',
'id' => $d'Page']'id'],
'slug' => $d'Page']'slug']
);
}
$data$k] = $d;
debug($d);
}
return $data;
}
}
}
Truc.php
<?php
class Truc extends AppModel{
public function afterFind($data,$primary = false){
foreach($data as $k=>$d){
if(isset($d'Truc']'slug']) && isset($d'Truc']'id']) ){
$d'Truc']'link'] = array(
'controller' => 'truc', //met au pluriel post ou page
'action' => 'show',
'id' => $d'Truc']'id'],
'slug' => $d'Truc']'slug']
);
}
$data$k] = $d;
debug($d);
}
return $data;
}
}
}
view/Pages/index.php
<?php
echo "</BR>debut index.ctp";
foreach($page as $k=>$v) :
$v = current($v);
debug($v'link']);
echo $this->Html->link($v'name'],$v'link']);?>
<?php endforeach;
echo "fin index.ctp.</BR>";?>
et /Trucs/index.php qui sont identiques
<?php
echo "</BR>debut index.ctp";
foreach($truc as $k=>$v) :
$v = current($v);
debug($v'link']);
echo $this->Html->link($v'name'],$v'link']);?>
<?php endforeach;
echo "fin index.ctp.</BR>";?>
dans le premier 'connect' tu as mis truc s et dans le deuxième page (sans s).
D'ailleurs il faudrait mettre des s a toutes les variables contrôleurs (comme indiqué dans ton poste, étrangement) 'controller' => '.... s' car le nom des classes de tes contrôleurs comporte un s.