Bonsoir à tous, je suis en train de rechercher mon erreur mais cela fait 2 heures que je suis bloqué.(environ 40ème minutes de la vidéo).
J'obtiens cette erreur:
app/View/Elements/sidebar.ctp (line 5)
Warning (2): Invalid argument supplied for foreach() [APP/View/Elements/sidebar.ctp, line 9]
Voici mes fichiers:
views/Elements/sidebar.ctp:
<div class="span4">
<h2>Sidebar</h2>
<?php
$categories=$this->requestAction(array('controller'=>'categories','action'=>'sidebar'));
?>
<ul>
<?php
foreach($categories as $k=>$v): $v=current($v);
debug($v);
echo "<br />";
endforeach;
?>
</ul>
</div>
views/Posts/index.ctp:
<div class="row">
<div class="span12">
<h1>News</h1>
<?php
foreach($posts as $k=>$v): $v=current($v); ?>
<h2><?php echo $v'name']; ?></h2>
<?php
echo $this->Text->truncate($v'content'],100,array(
'exact'=>false,
'html'=>true
));
?>
<p><a href="<?php echo $this->Html->url($v'link']); ?>" class="btn">Lire la suite</a></p>
<hr />
<?php endforeach; ?>
<?php echo $this->Paginator->numbers(); ?>
</div>
<div class="span4">
<h2>Sidebar</h2><?php
echo $this->element('sidebar');
?>
</div>
</div>
et le dernier fichier
Controller/CategoriesController.php
<?php
class CategoriesController extends AppController{
function admin_index()
{
$d'categories']=$this->Category->find('all');
$this->set($d);
}
function admin_edit($id=null)
{
if($this->request->is('put') || $this->request->is('post'))
{
if($this->Category->save($this->request->data))
{
$this->Session->setFlash('La catégorie a bien été modifié',"notif");
$this->redirect(array('action'=>'index'));
}
}
elseif($id)
{
$this->Category->id=$id;
$this->request->data=$this->Category->read();
}
}
function admin_delete($id)
{
$this->Session->setFlash('La catégorie a bien été supprimée','notif',array('type'=>'success'));
$this->Category->delete($id);
$this->redirect($this->referer());
}
function sidebar()
{
return $this->Category->find('all');
}
}
?>
Je ne comprend pas d'où mon erreur vient, je reste à votre disposition.
leknoppix
Désolé pour cette réponse un peu longue. J'ai du reformater mon mac. Voici un imprim écran de ce que j'ai maintenant lorsque je laisse le débug et que je l'appelle direct:
Ce que je ne comprend pas c'est pourquoi il appelle le controller Post alors que dans l'url, j'appelle le controlleur Categories.
Je ne pense pas, je te mettrais mes routes ce soir en post. Mais il ne me semble pas.
Voila mon fichier route
Router::connect('/', array('controller' => 'page', 'action' => 'display', 'home'));
Router::connect('/pages/:slug-:id',array('controller'=>'pages','action'=>'show'), array('pass'
=>array( 'id','slug'),'id'=>'[0-9]+','slug'=>'[a-z0-9\-]+'
));
Router::connect('/posts/:slug-:id',array('controller'=>'posts','action'=>'show'), array('pass'
=>array(
'id','slug'),'id'=>'[0-9]+','slug'=>'[a-z0-9\-]+'
));
Router::connect('/categories/:slug',array('controller'=>'posts','action'=>'category'), array('pass'
=>array(
'slug'),'slug'=>'[a-z0-9\-]+'
));
Donc il y a bien un soucis avec la dernière route, si je la supprime, cela débloque le soucis.
Donc merci, je vais pouvoir continuer à suivre le projet.