Search code examples
symfonyknpmenubundleknpmenu

Symfony2 KnpMenuBundle children with dynamic parameters


Let's say I have a routing setup like that :

users_list:
    pattern:  /users
    defaults: { _controller: AcmeBundle:User:list }

user_edit:
    pattern:  /user-edit/{id}
    defaults: { _controller: AcmeBundle:User:edit }

I would like to setup a menu like this

  • Home
  • --Users list
  • ----User edition

But I'm not sure how to handle my route 'user_edit' with dynamic params "id". Actually I don't want to display the link (which id ?), but I would like the 'Users list' parent node to be active if I edit an user.

I tried something like this

$userNode = $rootNode->addChild('Users list', array(
    'route' => 'users_list',
));
$userNode->addChild('User edition', array(
    'route' => 'user_edit',
));

Symfony complains about the missing parameter :(

Thanks !


Solution

  • Found something usefull in my case, you're able to solve this using the request in your menu definition class :

    $userNode->addChild('User edition', array(
        'route' => 'user_edit',
        'routeParameters' => array('id' => $this->getRequest()->get('id'))
    ));