2017-10-11 11 views
0

J'utilise sumfony 3.3.10, j'ai installé un nouveau projet de symfony et j'ajouté knpMenuBundle en utilisant cette commande,Symfony KnpMenuBundle erreur montrant [MenuBuilder En tant que service]

composer require knplabs/knp-menu-bundle "^2.0" 

tout Maintenant j'ai suivi exactement comme mentionné ici http://symfony.com/doc/master/bundles/KnpMenuBundle/menu_builder_service.html

et ajouté cette ligne {{ knp_menu_render('main') }} dans le fichier default/index.html.twig.

Maintenant, quand j'exécute le projet, sa me montrant cette erreur,

[InvalidArgumentException] 


Menu builder services must be public but "app.menu_builder" is a private service. 

config.yml

knp_menu: 
     # use "twig: false" to disable the Twig extension and the TwigRenderer 
     twig: 
      template: KnpMenuBundle::menu.html.twig 
     # if true, enables the helper for PHP templates 
     templating: false 
     # the renderer to use, list is also available by default 
     default_renderer: twig 

MenuBuilder.php

<?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(array $options) 
    { 
     $menu = $this->factory->createItem('root'); 

     $menu->addChild('Home', array('route' => 'homepage')); 
     // ... add more children 

     return $menu; 
    } 
} 

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 menu 

Comment puis-je résoudre. Toute aide est très appréciée. Merci

Répondre