Совпадение маршрутов Symfony KnpMenuBundle для похожих маршрутов
Допустим, у меня есть разборное меню, в котором одна запись в разборной части сопоставлена с маршрутом:
test/index
Как мне добиться, чтобы разборное меню оставалось открытым, а запись внутри помечалась как активная, если я изменил местоположение сайта, скажем:
test/create
/ test/update
/ test/detail
и т.п.
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' в текущий, если 'route_create' или 'route_update' является текущим маршрутом.
Другим подходом может быть сопоставление всех маршрутов, как вы это обычно делаете, затем позвоните setDisplay(false)
на них, чтобы скрыть их. Я не пробовал это, но я думаю, что это должно работать тоже.