8

KnpMenuBundleのビルダーでユーザーデータを取得するにはどうすればよいですか?

コントローラの次の行からユーザーデータを取得できることはわかっています。

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

しかし、メニュービルダーにも入れたいので、メニューにユーザー名を入れることができます。

4

2 に答える 2

10

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 )

于 2013-02-07T20:04:54.887 に答える
9

シムショーンは完全に正しいです。いくつかの調査の後、私はこのようにそれを行うことができます:

  1. に注入を追加し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 }
    
  2. メニュービルダーで使用する

    use Symfony\Component\Security\Core\SecurityContext;
    
    public function createAdministrationMainMenu(Request $request, SecurityContext $securityContext){
    
      $securityContext->getToken()->getUser();
    
    }
    
于 2013-10-01T22:06:11.583 に答える