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");
}
}
?>
var $belongsTo = 'Categories'; <= Tu ne devrais pas plutôt mettre "Category" ?
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.
C'est exact.
Un extrait du Cookbook:
<?php
class Profile extends AppModel {
var $name = 'Profile';
var $belongsTo = 'User';
}
?>