Witam,
staram się nauczyć programowania obiektowego wraz z rodzielaniem kodu według MVC i póki co utknąłem na tworzeniu menu i podmenu.
W tabeli mam 4 kolumny: (id, name, url i parent_id). Pierwsze 4 wiersze to nazwy menu wraz z parent_id = 0. Każdy kolejny wiersz to nazwa podmenu z parent_id przypisanym w zależności od przypisanego menu.
Pobieram dane i wyświetlam w następujący sposób:
$mainMenu = $db->query('SELECT * FROM menu');
$menu = $mainMenu->fetchAll(PDO::FETCH_OBJ);
foreach($menu as $primary) {
if($primary->parent_id == 0){
$main[$primary->id] = $primary;
}
}
echo $twig->render('menu.html', array(
'mainMenu' => $main
));
TWIG:
{% for main_menu in mainMenu %}
<li class="dropdown">
<a href="{{ main_menu.url}}" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ main_menu.name}}<span class="caret"></span></a>
<ul class="dropdown-menu">
{% for subs in main_menu.subMenu %}
{{ dump(subs) }}
<li><a href="#">{{ sub.name}}</a></li>
{% endfor %}
</ul>
</li>
{% endfor %}
Główne menu działa prawidłowo, ale chciałem zrobić dropdown-menu i wyświetlać pogrupowane tak jak miały przypisane parent_id.
To wymyśliłem coś takiego:
foreach($menu as $secondary) {
if($secondary->parent_id != 0)
{
$sub[$secondary->parent_id][$secondary->id] = $secondary;
}
}
Próbowałem jakoś to wyświetlać w Twigu ale ciągle dostaję informację o stdCLass Object i nie wiem jak mam w tę pętlę zbudować w PHP a do tego wyświetlnić dropdown.
Proszę bardzo o pomoc,
Pozdrawiam!