Bartłomiej Ś. WEBmajster
Temat: Doctrine, KnpMenuBundle => automatyczne menu
Witam serdecznie.Piszę tutaj po raz pierwszy. Zaczynam zabawę w Symfony 2 (w zasadzie 2.4). ;) Nurtuje mnie jedna sprawa, do której sam nie mogę dojść a zapewne jest to jakiś banał ... Chcę zbudować porządne automatyczne menu. W książce W. Gajdy opisane jest automatyczne menu, ale jest to proste menu, połączone z widokiem gdzie pętlą wyświetlane są pobrane dane z bazy (menu pierwszego poziomu). Mnie chodzi o wybranie z bazy i przed wyświetleniem w widoku chciałbym te dane przerzucać do KnpMenu, gdzie tworzone byłoby drzewo. Menu w bazie zbudowane jest w taki sposób, że posiada poszczególne "levele". Chciałbym, żebym po wybraniu z bazy, miał możliwość sprawdzenia jaki ma numer levelu i jeżeli np. mamy level 1,2,2,2,1,1,2,3,3,3 to podczas np. wyświetlania poszczególnych (pojedynczych) danych operuję tylko addChild i atrybutem dropdown.
Builder.php
...
$em = $this->container->get('doctrine.orm.entity_manager');
$repository = $em->getRepository('MyKursBundle:menu');
$menuItems = $repository->findAll();
...
$menu = $factory->createItem('root');
$menu->addChild('User', array('uri' => '#'))->setAttribute('dropdown', true);
$menu['User']->addChild('Profile', array('uri' => '#'))->setAttribute('divider_append', true);
$menu['User']->addChild('Logout', array('uri' => '#'));
Pierwsza część to zapytanie, druga to statyczne menu, gdzie zamiast niego chciałbym np. w pętli sprawdzać odpowiednie dane z tablicy $menuItems. Np. Sprawdzam ile elementów zawiera tablica $menuItems a potem pętlą for wyświetlam po indeksie $element[$i]->link. Wtedy miałbym kontrolę nad tymi danymi.
Jeżeli będzie trzeba coś wyjaśnić, czy jakoś nieskładnie się wyraziłem, to proszę pytać. :) Dziękuję za wszelkie podpowiedzi. Pewnie to pierdoła, ale jeszcze nie jestem w tym frameworku biegły.