Активировать текущий элемент в зависимости от маршрута сопоставления (KnpMenuBundle)

у меня есть этот конструктор

namespace Telnet\CSSBundle\Menu;
use Knp\Menu\FactoryInterface;
use Symfony\Component\DependencyInjection\ContainerAware;
class Builder extends ContainerAware
{
    public function mainMenu(FactoryInterface $factory, array $options)
    {
        $menu = $factory->createItem('Main Menu');
        $menu->addChild('Главная', array('route' => 'pages_index'));
        $menu->addChild('Форум', array('uri' => '/forum'));
        $menu->addChild('Демки', array('route' => 'pages_dem'));
        $menu->addChild('SourceBans', array('uri' => '/sourcebans'));
        $menu->addChild('HLStatsX', array('uri' => '/hlstatx'));
        return $menu;
    }
}

Как я могу получить это меню в любом действии, чтобы установить текущий элемент?


person Neka    schedule 05.10.2012    source источник


Ответы (1)


Вам не хватает этой части логики:

$menu->setCurrentUri($this->container->get('request')->getRequestUri());
person Vitalii Zurian    schedule 05.10.2012
comment
Фатальная ошибка: Вызов неопределенного метода Knp\Menu\MenuItem::setCurrentUri() в /var/www/vhosts/css.ilimnet.ru/www/Symfony/src/Telnet/CSSBundle/Menu/Builder.php в строке 14. Я пробовал это еще. - person Neka; 05.10.2012
comment
Какой хэш коммита Knp\Menu используется? - person Vitalii Zurian; 05.10.2012
comment
knplabs/knp-menu: 2.0.*, knplabs/knp-menu-bundle: master - person Neka; 05.10.2012