Ich möchte eine Navigationsliste in einem meiner Bundle (das "Basis" -Bündel) erstellen, die ein paar Optionen enthalten wird. Wie kann ich zulassen, dass andere Pakete dieser Liste hinzugefügt werden?Ich möchte eine Nav-Liste im Basispaket erstellen. Wie kann ich zulassen, dass andere Pakete dieser Liste hinzugefügt werden?
Antwort
Ich möchte eine ausführlichere Frage, aber hier geht es trotzdem.
Zuerst überprüfen Sie KnpBundles für Bundles, die bereits Menüfunktionen bieten. So etwas wie KnpMenuBundle. Sieht gut aus? Gut, benutze es.
Nichts passt Ihrem Geschmack? Dann rollen Sie Ihre eigenen. Ich würde mit so etwas wie dies gehen:
erstellen
NavListManager
Klasse im Basispaket und eineAbstractNavList
Klasse von jedem anderen Paket erweitert werden, die Optionen auf der Navigationsliste hinzufügt.Jedes Bündel sollte eine
NavList
Klasse bieten, dieAbstractNavList
erweitert. Diese Klassen sollten Navigationslistenoptionen enthalten.Bearbeiten Sie in Ihrem Basispaket die
DependencyInjection\<MyBundle>Extension::load()
-Methode, um eineNavList
-Klasse in jedem Ihrer Bundles unter Verwendung von$container->getParameter('kernel.bundles')
zu suchen. Fügen Sie jede gesammelte Klasse inNavListManager
ein.Rufen Sie nun in der Vorlage etwas wie
$navman->render()
auf, um die Navigationsliste zu generieren.