Сопоставление маршрутов Symfony KnpMenuBundle для аналогичных маршрутов

Допустим, у меня есть сворачиваемое меню, где одна запись в сворачиваемой части сопоставляется с маршрутом:

test/index

Как я могу добиться того, чтобы складное меню оставалось открытым, а запись внутри помечалась как активная, если я изменю местоположение сайта, скажем:

test/create / test/update / test/detail и т. д.


person Nickolaus    schedule 03.12.2015    source источник


Ответы (1)


В вашем 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;
}

Это установит MenuItem 'Index' в значение current, если 'route_create' или 'route_update' является текущим маршрутом.

Другой подход может состоять в том, чтобы сопоставить все маршруты, как обычно, а затем вызвать для них setDisplay(false), чтобы скрыть их. Я не пробовал это, но я думаю, что это тоже должно сработать.

person spackmat    schedule 17.02.2016