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


Grafikart
Réponse acceptée

var $belongsTo = 'Categories'; <= Tu ne devrais pas plutôt mettre "Category" ?

Dans ton modèle article tu as bien un belongsTo qui lie les articles au catégories ?

LB_
Auteur

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.

LB_
Auteur

J'ai renommé le field "nom" par "name" et rien n'y fais :(.

C'est exact.

Un extrait du Cookbook:

<?php
class Profile extends AppModel {
    var $name = 'Profile';                
    var $belongsTo = 'User';   
}
?>