Bonsoir à tous!

Après avoir chercher sur le forum puis sur internet, je me tourne vers vous!
J'essaye de récupérer des posts lié à une catégorie avec CakePHP (Tutoriel "Créer un blog avec CakePHP"), et lorsque j'effectue un débug sur la variable, il ne m'affiche que la catégorie, mais pas les posts lié (embêtant je sais)!

Ps: le code place dans une class bien entendu, je vais directement à l'essentiel.

Voilà le code que j'utilise :

function clist(){
        $cat = $this->Categories->find('all');
        return $cat;
    }

                $categorie = $this->requestAction(array('controller' => 'Categories', 'action' => 'clist'));
                debug($categorie);

                  foreach($categorie as $c): $c = current($c) ?>
                    <div class="categorie"><?php echo $this->Html->link($c'nom'],array('action' => '#'.$c'nom'])); ?></div>
            <?php endforeach; ?>

4 réponses


slyvaan
Réponse acceptée

Salut,

vu que tu ne suis pas trop les conventions de CakePhp pour le coup, je vais supposer que tu suis le modèle suivant, tu n'auras qu'à adapter selon tes conventions de nommage.

Model Post:

<?php
    class Post extends AppModel
    {
        public $belongsTo = array('Category');
    }

Model Category:

<?php
    class Category extends AppModel
    {
        public $hasMany = array('Post');
    }

Controller:

<?php
    class CategoriesController extends AppController
    {
        public function clist()
        {
            $cat = $this->Category->find('all');
            return $cat;
        }
    }

Vue:

<?php 
        $categories = $this->requestAction(array('controller' => 'categories', 'action' => 'clist'));
        debug($categories);
    ?>

Si le controller ne retourne pas les liaisons avec cette configuration, tu as 2 solutions, soit de régler le niveau de récursivité, soit d'utiliser le comportement containable. Ce dernier serait le plus adapté mais si tu débute je te conseille de voir du côté de la récursivité. Grafikart en parle à un moment dans son tuto pour le Blog, mais ton controller donnerait quelque chose comme ceci, si tu veux retourner l'intégralité des liaisons :

<?php
    class CategoriesController extends AppController
    {
        public function clist()
        {
            $cat = $this->Category->find('all', array(
                'recursive' => 2
            ));
            return $cat;
        }
    }

Je te conseille de voir la documentation pour avoir le plus d'infos la dessus, elle est assez claire. Et dès que tu auras l'habitude, de prendre le réflexe d'utiliser le comportement Containable pour faire tes requêtes, afin de les allégé et d'en avoir le maximum de contrôle.

J'espère avoir répondu à ta question :)

as tu fait correctement les liaisons model Hasmany/Hasone avec la foreign key paramétré genre l'id de la catégorie de la table posts , pour avoir la liaison quand tu cherche les catégories , il faut aussi que ton récursive de ton config soit bien paramétré pour remonter dans les liaisons

Splaze
Auteur

J'ai fais une liaison de type 1-n, en revanche au niveau tu récursive, si tu avais quelques explications!

Splaze
Auteur

Je te remercie beaucoup pour cette explication très net et très claire!