Хлебные крошки Symfony 2 с KnpMenu

Я использую стабильные версии KnpMenu и KnpMenuBundle - v.1.2.0. Я не могу использовать v.2 из-за некоторых зависимостей.

И я пытаюсь построить панировочные сухари, в зависимости от моего меню.

Начнем с меню. У меня есть класс MenuBuilder:

$menu = $this->factory->createItem('main');
$menu->setLabel('Main');
$menu->addChild('home', array('route' => 'home','label'=>'Home'));
$menu['home']->addChild('level1',array('route' => 'level1', 'label' => 'Level1'));
$menu['home']['level1']->addChild('level2',array('route' => 'level2', 'label' => 'Level2'));

Класс Knp\Menu\MenuItem имеет метод getBreadcrumbsArray(). Он должен возвращать массив элементов в текущем активном меню. Если вы используете более раннюю версию KnpMenu (‹= 1.1.2, моя версия), возвращаемый массив будет иметь вид label => uri.

Думаю, мои хлебные крошки, когда я загружаю маршрут level2, должны выглядеть примерно так:

Главная страница -> Уровень 1 -> Уровень 2

потому что уровень 1 является родителем уровня 2, а дом также является его предком.

Вместо этого вызов метода getBreadcrumbsArray() в моем шаблоне Twig выдает следующие данные:

array(2) {
  ["Main"]=>
  NULL
  ["Home"]=>
  string(25) "/symfony/web/app_dev.php/"
}

Ни Level1, ни Level2, только Home. Что не так? Это должно так работать? Что я делаю неправильно?


person Akhmed    schedule 27.06.2013    source источник
comment
что возвращает getCurrentUri?   -  person Wouter J    schedule 27.06.2013


Ответы (1)


для Knp v1 следует попытаться сгенерировать дочерние элементы:

$menu = $this->factory->createItem('root');
$menu->addChild['Main']
     ->seLabel['home']
$menu['Main']->addchild('level1', array('route', '@route1'))
$menu['Main']['level1']->addChild('level2', array('route', '@route2'))
{% knp_menu_get('Builder:BreadCrumb').getBreadcrumbsArray() %}
person aurny2420289    schedule 09.10.2013