首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用KnpMenu进行折叠菜单导航

使用KnpMenu进行折叠菜单导航
EN

Stack Overflow用户
提问于 2013-03-13 06:17:57
回答 1查看 1.2K关注 0票数 1

我想为当前项目使用KnpMenu来处理我的导航树逻辑。我构建了一个菜单树,如下所示:

代码语言:javascript
复制
use Knp\Menu\Matcher\Matcher;
use Knp\Menu\MenuFactory;
use Knp\Menu\Renderer\ListRenderer;

$factory = new MenuFactory();
$menu = $factory->createItem('my_menu');

$menu->addChild('home', array('uri' => '/', 'label' => 'Home'))
     ->addChild('about', array('uri' => 'about', 'label' => 'About'));

$cat1 = $menu->addChild('category_1', array('uri' => 'category_1', 'label' => 'Category 1'));
$cat1_1 = $cat1->addChild('category_1_1', array('uri' => 'category_1_1', 'label' => 'Category 1.1'));
$cat1_1->addChild('category_1__1', array('uri' => 'category_1_1_1', 'label' => 'Category 1.1.1'));
$cat1_1->addChild('category_1_1_2', array('uri' => 'category_1_1_2', 'label' => 'Category 1.1.2'))->setCurrent(true);
$cat1->addChild('category_1_2', array('uri' => 'category_1_2', 'label' => 'Category 1.2'));

$renderer = new ListRenderer(new Matcher());
echo $renderer->render($menu);

我想知道是否有可能渲染一个折叠的菜单树,其中只显示当前活动的菜单项。其他项目不应显示。在文档中,我还没有找到实现这一点的方法。

有谁有解决方案吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-13 06:25:02

你的意思是,如果父菜单是活动的,你只想让菜单“展开”?

如果是,那么是的,我有同样的要求,这里有一个PR为它开放https://github.com/KnpLabs/KnpMenu/pull/85

目前,由于没有合并,我正在使用我的分支来替换composer中标记的KnpMenu。

代码语言:javascript
复制
//composer.json excerpt
...
"repositories": [
    {
        "type": "vcs",
        "url":  "git@github.com:catchamonkey/KnpMenu"
    }
],
require: {
    ...
    "knplabs/knp-menu": "dev-display_children_if_ancestor_current as 2.0.0",
    ...
}
...

然后使用此行为标记顶级项,因此要使您的category_1仅在子项处于活动状态(或它处于活动状态)时才展开,您可以这样做

代码语言:javascript
复制
$cat1->setDisplayChildrenIfAncestorCurrent(true);

这是由这里的细枝呈现的更改https://github.com/KnpLabs/KnpMenu/pull/85/files#L2R74处理的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15373343

复制
相关文章

相似问题

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