Dans ton modèle article tu as bien un belongsTo qui lie les articles au catégories ?
Bonjour à tous,
Je suis actuellement le tutoriel "Création d'un blog" avec le framework CakePHP.
Je suis en train de crée la page qui affiche mes articles (Posts), j'aimerai mettre à côté du titre le nom de la catégorie auquel appartient l'article. Seulement elle ne s'affiche pas.
J'ai cette erreur : Notice (8): Undefined index: Category [APP/views/Articles/index.ctp, line 14]
Je vous laisse mon code pour y voir un peu plus clair :
index.ctp
<?php
echo $paginator->numbers();
echo "<br />";
foreach($articles as $a):
echo "<div class='wrapperArticle'>
<div class='tableArticle'>
<img src=". $a'Article']'img'] ." />
</div>
<div class='tableContenu'>
<span class='titreSection2'>". $a'Article']'titre'] ." :: ". $a'Category']'nom'] . "</span><br />
<a href='#'> > + ] Lire la suite</a>
</div>
<div class='separArticle'></div>
</div>";
endforeach;
?>
category.php
<?php
class Category extends AppModel{
var $name ='Category';
var $hasMany="Article";
}
?>
categories_controller.php
<?php
class CategoriesController extends AppController{
var $name='Categories';
function clist(){
return $this->Category->find('all',
array(
'recursive' => -1
));
}
}
?>
articles_controller.php
<?php
class ArticlesController extends AppController{
var $name="Articles";
var $paginate = array(
'Article' => array(
'limit' => 4,
'order' => array(
'Article.titre' => 'asc'
),
));
function index(){
$q = $this->paginate('Article');
$this->set('articles',$q);
}
function categories(){
$q = $this->paginate('Article',array("Article.category_id"=>$id));
$this->set('articles',$q);
$this->render("index");
}
}
?>
6 réponses
Oui oui voilà mon modèle article :
<?php
class Article extends AppModel{
var $name ='Article';
var $belongsTo = 'Categories';
}
?>
Ce n'est pas parce qu'il n'a pas respecté les conventions de CakePHP ? Perso je n'ai pas vue le tuto, j'ai appris CakePHP sur le siteduzéro.
Faudrait surement remplacer le field "nom" par "name" dans la db.
J'ai renommé le field "nom" par "name" et rien n'y fais :(.
var $belongsTo = 'Categories'; <= Tu ne devrais pas plutôt mettre "Category" ?
C'est exact.
Un extrait du Cookbook:
<?php
class Profile extends AppModel {
var $name = 'Profile';
var $belongsTo = 'User';
}
?>