J'ai essayé d'intégrer KnpMenuBundle comme un service tel qu'indiqué dans la doc.
J'ai simplement copié-collé le code, plus ou moins tel quel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 <?php // AppBundle/Menu/MenuBuilder.php namespace AppBundle\Menu; use Knp\Menu\FactoryInterface; class MenuBuilder { private $factory; /** * @param FactoryInterface $factory * * Add any other dependency you need */ public function __construct(FactoryInterface $factory) { $this->factory = $factory; } public function createMainMenu() { $menu = $this->factory->createItem('root'); $menu->addChild('Home', array('route' => 'homepage')); return $menu; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 # app/config/services.yml app.menu_builder: class: AppBundle\Menu\MenuBuilder arguments: ["@knp_menu.factory"] tags: - { name: knp_menu.menu_builder, method: createMainMenu, alias: main } # The alias is what is used to retrieve the menuEt j'appelle le service dans mon template comme indiqué, avec l'alias "main" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 # app/config/config.yml imports: - { resource: parameters.yml } - { resource: security.yml } - { resource: services.yml } [...] knp_menu: twig: template: knp_menu.html.twig templating: false default_renderer: twig
Symfony me renvoie une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 {% extends 'logged.html.twig' %} {% block body %} {{ knp_menu_render('main') }} <div id="bienvenue"> <h3>Bonjour, {{ user.nom }} {{ user.prénom }}</h3> </div> {% endblock %}
An exception has been thrown during the rendering of a template ("The menu "main" is not defined.") in accueil.html.twig at line 6.
La question a déjà été posée sur StackOverflow et Github, mais aucune des réponses ne m'a aidé.
Et je n'ai pas trouvé comment débugger le problème.
Partager