Knpmenubundle: How to get user data in builder?

How can I get user data in KnpMenuBundle Builder?

I know that I can get user data through this line in the controller:

 $user = $this->get('security.context')->getToken()->getUser(); 

but I want it to get into my menu constructor too, so I can put the username in the menu.

+7
source share
2 answers

Your MenuBuilder is defined as a service in Symfony2, as you can see at https://github.com/KnpLabs/KnpMenuBundle/blob/master/Resources/doc/menu_service.rst

Basically, all you have to do is configure the MenuBuilder service definition to implement the security context. ( http://symfony.com/doc/current/book/service_container.html#referencing-injecting-services )

+10
source

Simshown is completely right. After some research, I managed to do it as follows:

  • Add an injection to services.yml :

     administration_main.menu.main: class: Knp\Menu\MenuItem factory_service: administration_main.menu_builder factory_method: createAdministrationMainMenu arguments: ["@request","@security.context"] scope: request tags: - { name: knp_menu.menu, alias: administrationMain } 
  • Use it in the menu designer

     use Symfony\Component\Security\Core\SecurityContext; public function createAdministrationMainMenu(Request $request, SecurityContext $securityContext){ $securityContext->getToken()->getUser(); } 
+8
source

All Articles