针对类似路由的Symfony KnpMenuBundle路由匹配

时间:2015-12-03 09:18:19

标签: symfony knpmenubundle knpmenu

假设我有一个可折叠菜单,其中可折叠部分中的一个条目映射到路线:

test/index

如果我更改站点位置,我怎样才能实现可折叠菜单保持打开状态并将内部条目标记为活动状态,让我们说:

test/create / test/update / test/detail

1 个答案:

答案 0 :(得分:0)

在您的MenuBuilder中,您可以使用开关匹配这些路线,并在您想要当前的项目上调用setCurrent()。例如:

// The MenuBuilder must have access to the container
$request = $this->container->get('request');
switch ($request->get('_route'))
{
    case 'route_create':
    case 'route_update':
        $menu->getChild('Index')->setCurrent(true);
        break;
}

如果'route_create'或'route_update'是当前路线,这会将MenuItem'Index'设置为current。

另一种方法可能是像往常一样匹配所有路线,然后在它们上面调用setDisplay(false)来隐藏它们。我没有试过这个,但我认为这也应该有用。