Pakiet KnpMenuBundle pozwala w prosty sposób implementować menu do strony. Można tworzyć dowolne zagnieżdżenia elementów menu, które są automatycznie renderowane. Oczywiście zalet jest więcej 🙂 W tym artykule skupimy się na podstawach, czyli instalacji, konfiguracji i użyciu menu w kontrolerze, a następnie wyrenderowaniu go na stronie.

Zaczniemy od instalacji bundla z wiersza poleceń:

Po poprawnej instalacji pakietu, zaktualizuj plik bundles.php (config/bundles.php):

Następnie tworzymy klasę Builder.php (src/Menu/Builder.php), w której budujemy menu. W tym celu zapisujemy funkcję o nazwie np: MyMenu, a wewnątrz niej dodajemy elementy menu (addChild) wraz z odnośnikami (parametr route).

Parametr route identyfikuje się z @Route kontrolera np: name=”home :

Oczywiście w tym przykładzie zapodałem najprostszy przypadek, czyli menu jednopoziomowe. Elementy menu możesz zagnieżdżać według schematu:

W kolejnym kroku, wprowadzamy konfigurację powyższego menu do pliku services.yaml (config/services.yaml):

  • w app.menu.builder definiujemy naszą klasę podając class: App\Menu\Builder
  • w app.main_menu dodajemy dla atrybutu factory nazwę metody MyMenu
  • w tagach (tags) wprowadzamy dla naszego menu dowolny alias, np: navigator

Alias navigator wprowadzamy do funkcji knp_menu_render , która wyrenderuje menu w szablonie (np: templates/base.html.twig):

Czytaj ciąg dalszy tego tematu: DYNAMICZNE MENU W SYMFONY 4 + KNPMENUBUNDLE