Bonjour,

Je souhaiterai faire une barre de menu dynamique, l'administrateur peut ajouter des menus et sous-menu, pour cela j'ai créer un CategoriesController et j'aimerai envoyer le résultat du find au layouts default qui contient la forme du menu, j'ai essayer d'utiliser la méthode render mais ça ne fonctionne pas....

Quelqu'un aurait une idée ? Merci d'avance

3 réponses


ker0x
Réponse acceptée

Normalement en faisant l'habituel

$this->set('categories', $categories);

dans ton Controller, tu rends la variable $categorie disponible dans toute ta vue, y compris le layout default.ctp, il suffit juste de faire une condition pour vérifier que ta variable existe sinon Cake te pondra une erreure.

L'autre solution, est d' utiliser les blocs de vues. Dans ton layout default.ctp rajoute cette ligne de code à la place de ton menu:

<?php echo $this->fetch('menu'); ?>

et ensuite tu rajoute ça dans ta vue à n'importe quel endroit :

<?php $this->start('menu'); ?>
    <?php echo $this->element('menu', array('categorie' => $categorie); ?>
<?php $this->end(); ?>

Le

$this->start('menu')

va indiquer à Cake d'utiliser l'element menu et de l'inclure à la place du

$this->fetch('menu');

Il faut utiliser requestAction.

Merci beaucoup pour vos réponse, et ça fonctionne bien :)