首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用KnpMenu的Symfony 2面包屑

使用KnpMenu的Symfony 2面包屑
EN

Stack Overflow用户
提问于 2013-06-27 15:50:04
回答 1查看 2.2K关注 0票数 1

我使用了稳定版本的KnpMenuKnpMenuBundle - v.1.2.0,由于一些依赖关系,我不能使用v.2。

我试着做面包屑,取决于我的菜单。

让我们从菜单开始。我的MenuBuilder课程是:

代码语言:javascript
复制
$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路由时,我的面包屑应该类似于:

Home -> Level1 -> Level2

因为Leve1是Level2的父级,而Home也是它的祖先。

相反,Twig模板中的getBreadcrumbsArray()方法调用会生成以下数据:

代码语言:javascript
复制
array(2) {
  ["Main"]=>
  NULL
  ["Home"]=>
  string(25) "/symfony/web/app_dev.php/"
}

没有Level1,没有Level2,只有Home。怎么啦?应该是那样的吗?我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2013-10-09 15:55:06

对于Knp v1,应该尝试生成儿童:

代码语言:javascript
复制
$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'))
代码语言:javascript
复制
{% knp_menu_get('Builder:BreadCrumb').getBreadcrumbsArray() %}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17347694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档