Salut je souhaite affichier l'arbre de mes catégories pour en faire un menu simple avec des <ul> <li>
cependant sur CakePHP 3 je suis tourne en rond.
Voici mon arbre des catégories valide :
(int) 8 => 'Maison',
(int) 9 => 'Pack Chauffage',
(int) 15 => '_Pack Chauffage 1',
(int) 16 => '_Pack Chauffage 2',
(int) 17 => '_Pack Chauffage 4',
(int) 10 => 'Extérieur',
(int) 14 => '_Bardage',
(int) 11 => 'Electricité',
(int) 12 => '_Prise éléctrique',
(int) 13 => '_Interrupteur'
Pouvez vous m'aiguiller sur une méthode pour effectuer ce menu ?
<ul>
<li><a href="/categories/view/{id_de_la_catégorie}">Maison</a></li>
<li><a href="/categories/view/{id_de_la_catégorie}">Pack Chauffage</a>
<ul>
<li><a href="/categories/view/{id_de_la_catégorie}">Pack Chauffage 1</a></li>
<li><a href="/categories/view/{id_de_la_catégorie}">Pack Chauffage 2</a></li>
<li><a href="/categories/view/{id_de_la_catégorie}">Pack Chauffage 3</a></li>
</ul>
</li>
<li><a href="/categories/view/{id_de_la_catégorie}">Extérieur</a>
<ul>
<li><a href="/categories/view/{id_de_la_catégorie}">Bardage</a></li>
</ul>
</li>
<li><a href="/categories/view/{id_de_la_catégorie}">Electricité</a>
<ul>
<li><a href="/categories/view/{id_de_la_catégorie}">Prise éléctrique</a></li>
<li><a href="/categories/view/{id_de_la_catégorie}">Interrupteur</a></li>
</ul>
</li>
</ul>
Merci pour votre aide.
Perso je récupère les enregistrement normalement (avec un find all) et ensuite je réorganise avec une fonction, je ne sais pas si dans cakePHP3 ils ont intégré un itérateur pour ce genre de chose donc tu risque de devoir faire pareil ^^
Voila la solution comme quoi avec les bom termes c'est plus simple.
Dans ma vue :
<ul>
<?php foreach ($collection->nest('id', 'parent_id')->toArray() as $key => $categories): ?>
<?php if ($categories->children): ?>
<li>
<a href="<?= $this->Url->build(['controller' => 'Categories', 'action' => 'view', $categories->id]); ?>"><?= $categories->name ?></a>
<ul>
<?php foreach ($categories->children as $key => $category): ?>
<li><a href="<?= $this->Url->build(['controller' => 'Categories', 'action' => 'view', $category->id]); ?>"><?= $category->name ?></a></li>
<?php endforeach ?>
</ul>
</li>
<?php else: ?>
<li><a href="<?= $this->Url->build(['controller' => 'Categories', 'action' => 'view', $categories->id]); ?>"><?= $categories->name ?></a></li>
<?php endif ?>
<?php endforeach ?>
</ul>
Dans mon controlleur :
use Cake\Collection\Collection;
[...]
$categories = $this->Categories->find('all');
$collection = new Collection($categories);
$this->set(compact('collection'));
[...]
J'éspère pourvoir aider avec cette réponse
Merci
Merci je me penche sur la question avec le bon terme iteration
dans le doc il y a un truc à tester Utiliser des Données en Arbre, Merci pour ta réponse.