Отображение активной ветви навигации Zend без верхнего уровня

Я представляю элементы верхнего уровня объекта Zend Navigation в одном месте:

echo $this->navigation()->menu()->setMaxDepth(0); 

Как визуализировать дерево навигации со второго уровня вниз для активной ветви? Я попытался создать частичное, которое $this->container объект $this->container , но я не знаю, как определить, является ли мой текущий элемент активной ветвью. Как только я определил, что это активная ветка, как мне отображать меню? Я делаю это с трудом и пропуская что-то очевидное?

Благодаря!


ОБНОВИТЬ:

Я принял решение, потому что это то, что я использовал, но я также хотел бы дать ответ на мой фактический вопрос, для справки. ( $this объект вида)

 // Find the active branch, at a depth of one $branch = $this->navigation()->findActive($this->nav, 1, 1); if (0 == count($branch)) { // no active branch, find the default branch $pages = $this->nav->findById('default-branch')->getPages(); } else { $pages = $branch['page']->getPages(); } $this->subNav = new Zend_Navigation($pages); 

$this->subNav можно затем использовать для отображения подменю.

Solutions Collecting From Web of "Отображение активной ветви навигации Zend без верхнего уровня"

Я делаю что-то подобное. Моя основная навигация справляется с чем-то вроде этого …

 $this->navigation()->menu()->setPartial('tabs.phtml'); echo $this->navigation()->menu()->render(); 

Затем в моем tabs.phtml я перебираю контейнер таким образом …

 if (count($this->container)) { foreach($this->container as $page) { if ($page->isVisible()) { if ($page->isActive(true)) { $subcontainer = $page->getPages(); foreach($subcontainer as $subpage) { // echo my link } } } } } 

Надеюсь, это поможет.

Если я правильно задал вопрос, так я это делаю:

 print $this->navigation()->menu()->renderMenu(null, array( 'minDepth' => 1, 'maxDepth' => 1, 'onlyActiveBranch' => true, 'renderParents' => false)); 

Отображает только подменю текущего активного меню.

Я делаю это так:

 <?php // Render top-level elements echo $this->navigation()->menu()->setMaxDepth(0); // Render 2nd level elements for active element echo $this->navigation()->menu() ->setOnlyActiveBranch(true) ->setRenderParents(false) ->setMinDepth(1); ?> 

но это нехорошее решение. Лучше по одному для каждого уровня в качестве отдельного меню:

 <!-- level 1 --> <?php echo $this->navigation()->menu()->setMaxDepth(0); ?> <!-- level 2 --> <?php echo $this->navigation()->menu()->setOnlyActiveBranch(true)->setRenderParents(true)->setMinDepth(1)->setMaxDepth(1); ?> <!-- level 3 --> <?php echo $this->navigation()->menu()->setOnlyActiveBranch(true)->setRenderParents(false)->setMinDepth(2)->setMaxDepth(2); ?>