KnpMenuBundle
のビルダーでユーザーデータを取得するにはどうすればよいですか?
コントローラの次の行からユーザーデータを取得できることはわかっています。
$user = $this->get('security.context')->getToken()->getUser();
しかし、メニュービルダーにも入れたいので、メニューにユーザー名を入れることができます。
KnpMenuBundle
のビルダーでユーザーデータを取得するにはどうすればよいですか?
コントローラの次の行からユーザーデータを取得できることはわかっています。
$user = $this->get('security.context')->getToken()->getUser();
しかし、メニュービルダーにも入れたいので、メニューにユーザー名を入れることができます。
https://github.com/KnpLabs/KnpMenuBundle/blob/master/Resources/doc/menu_service.rstで確認できるように、MenuBuilder は Symfony2 のサービスとして定義されています 。
基本的に、行う必要があるのは、セキュリティ コンテキストを挿入するように MenuBuilder サービス定義を構成することだけです。( http://symfony.com/doc/current/book/service_container.html#referencing-injecting-services )
シムショーンは完全に正しいです。いくつかの調査の後、私はこのようにそれを行うことができます:
に注入を追加し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();
}