1

KnpMenuKnpMenuBundleの安定版を使用しています- 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

これは、Leve1 が Level2 の親であり、Home がその祖先でもあるためです。

その代わりに、Twig テンプレートでgetBreadcrumbsArray()メソッドを呼び出すと、次のデータが生成されます。

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

Level1なし、Level2なし、 Homeのみ。なにが問題ですか?そのように動作するはずですか?私は何を間違っていますか?

4

1 に答える 1

0

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() %}
于 2013-10-09T15:55:06.953 に答える