如何在KnpMenuBundle
的 Builder 中获取用户数据?
我知道我可以通过 Controller 中的这一行获取用户数据:
$user = $this->get('security.context')->getToken()->getUser();
但我也希望它进入我的菜单构建器,所以我可以将用户名放在菜单中。
如何在KnpMenuBundle
的 Builder 中获取用户数据?
我知道我可以通过 Controller 中的这一行获取用户数据:
$user = $this->get('security.context')->getToken()->getUser();
但我也希望它进入我的菜单构建器,所以我可以将用户名放在菜单中。
您的 MenuBuilder 在 Symfony2 中被定义为服务,您可以在 https://github.com/KnpLabs/KnpMenuBundle/blob/master/Resources/doc/menu_service.rst中看到
基本上,您需要做的就是配置您的 MenuBuilder 服务定义以注入安全上下文。(http://symfony.com/doc/current/book/service_container.html#referencing-injecting-services)
Simshaun 是完全正确的。经过一些研究,我设法做到了:
添加注入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 Symfony\Component\Security\Core\SecurityContext;
public function createAdministrationMainMenu(Request $request, SecurityContext $securityContext){
$securityContext->getToken()->getUser();
}