2013-03-12 1 views
1

현재 프로젝트에 KnpMenu를 사용하여 내비게이션 트리 로직을 처리하려고합니다. 나는이 같은 메뉴 트리 구축이 : 단지 현재 활성화 된 메뉴 항목이 표시됩니다 접힌 메뉴 트리를 렌더링 할 수 있다면 궁금KnpMenu를 사용한 접이식 메뉴 탐색

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); 

합니다. 다른 항목은 표시하면 안됩니다. 설명서에서이 작업을 수행하는 방법을 찾지 못했습니다.

해결책이있는 사람이 있습니까?

답변

1

상위가 활성화되어있는 경우에만 메뉴를 가지고 '전개'한다고 의미합니까 감사?
은 만약 그렇다면, 그래, 나도 같은 요구 사항을했고, 홍보는 내가 작곡가의 태그 KnpMenu을 대체 할 제 분기를 사용하고 병합되지 것 같이 여기 오픈 현재 https://github.com/KnpLabs/KnpMenu/pull/85

있다.

//composer.json excerpt 
... 
"repositories": [ 
    { 
     "type": "vcs", 
     "url": "[email protected]:catchamonkey/KnpMenu" 
    } 
], 
require: { 
    ... 
    "knplabs/knp-menu": "dev-display_children_if_ancestor_current as 2.0.0", 
    ... 
} 
... 

그런 다음 이렇게 아이가 활성화되어있는 경우 category_1 만 확장 할 (또는이 활성화됩니다), 당신이

$cat1->setDisplayChildrenIfAncestorCurrent(true); 

할 것입니다 그리고이는 방법이 문제와 최상위 항목에 태그를 나뭇 가지에 의해 처리 된 여기에 변경 https://github.com/KnpLabs/KnpMenu/pull/85/files#L2R74

+0

안녕하세요, 빠른 답변 주셔서 감사합니다. 너 내가 정확히 무엇을 찾고 있는지 정확하게 이해했다. 나는 너의 지점에서 KnpMenu를 보았다. 내가 이해할 수없는 것은 현재 MenuItem에 true로 설정된 displayChildrenIfAncestorCurrent가 있는지 여부를 확인하고이 항목을 표시할지 여부를 결정하는 논리입니다. – user1036651

+0

업데이트 암탉 사무실에 도착하는 데 1 시간 정도 걸립니다 – catchamonkey

+0

@ user1036651 예를 사용하여 어디에서 사용했는지 업데이트했습니다. – catchamonkey