I want to pass an additional parameter {'id': '555'}
from a twig-template to the $options-parameter
in the MenuBuilder.php
.
The twig looks like:
...
{{ knp_menu_render('createSwitchButton', {'id': '555'} ) }}
...
The service.yml
looks like:
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 }
And the MenuBuilder.php
looks like:
...
public function createSwitchButton(Request $request,array $options)
{
$menu = $this->factory->createItem('root');
$menu->addChild($options['id'], array('route' => 'login'));
...
return $menu;
}
But: in the Builder
, $options['id']
is unknown. I think the arguments-statement in the service.yml
is wrong.
Would somebody help me?
You didn't mention a version of KnpBundle. In v2.* version according to documentation you can do like this
{% set menuItem = knp_menu_get('TestProductBundle:Builder:mainMenu', [], {'some_option': 'my_value'}) %}
{{ knp_menu_render(menuItem) }}