我使用稳定版本的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, my version),则返回的数组将采用 label => uri 的形式。
我想,当我加载level2路由时,我的面包屑应该类似于:
主页 -> 一级 -> 二级
因为 Level1 是 Level2 的父级,而 Home 也是它的祖先。
取而代之的是,我的 Twig 模板中的getBreadcrumbsArray()方法调用会生成以下数据:
array(2) {
["Main"]=>
NULL
["Home"]=>
string(25) "/symfony/web/app_dev.php/"
}
没有Level1,没有Level2,只有Home。怎么了?它应该这样工作吗?我究竟做错了什么?