Совпадение маршрутов 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) на них, чтобы скрыть их. Я не пробовал это, но я думаю, что это должно работать тоже.

Другие вопросы по тегам