将参数传递给KnpMenuBundle-MenuBuilder(注册为服务)

时间:2014-07-16 10:40:30

标签: php symfony twig knpmenubundle

我想将其他参数{'id': '555'}从树枝模板传递到$options-parameter中的MenuBuilder.php。 树枝看起来像:

...
{{ knp_menu_render('createSwitchButton', {'id': '555'} )  }}
...

service.yml看起来像:

 RochPartyplaner.menu_builder:
    class: RochPartyplaner\PartyBundle\Menu\MenuBuilder
    arguments: ["@knp_menu.factory"]

 RochPartyplaner.menu.createSwitchButton:
    class: Knp\Menu\MenuItem 
    factory_service: RochPartyplaner.menu_builder
    factory_method: createSwitchButton
    arguments: ["@request", []]
    scope: request 
    tags:
        - { name: knp_menu.menu, alias: createSwitchButton }

MenuBuilder.php看起来像:

...    
public function createSwitchButton(Request $request,array $options)
{
    $menu = $this->factory->createItem('root');

    $menu->addChild($options['id'], array('route' => 'login'));
    ...

    return $menu;
}

但是:在Builder中,$options['id']未知。我认为service.yml中的参数声明是错误的。

有人会帮助我吗?

1 个答案:

答案 0 :(得分:3)

你没有提到KnpBundle的版本。在v2。*版本according to documentation中你可以这样做

{% set menuItem = knp_menu_get('TestProductBundle:Builder:mainMenu', [], {'some_option': 'my_value'}) %}

{{ knp_menu_render(menuItem) }}