knpmenubundle

KnpMenuBundle

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ń:

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


3 thoughts on “KnpMenuBundle”

  1. Aliaksandr Harbunou

    I guess you meant „uri” instead of „route” option. Something like: $menu->addChild(‚Home’, [‚uri’ => ‚#’]);

    1. I do not know if I understand correctly 🙂 but there should be a „route” and in the Controller the equivalent: name = „Homepage”, etc.

Leave a Comment

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *