我在問的是類似於這個issue,它仍然沒有解決。使用Zend渲染活動分支的子項導航視圖幫助
我想創建一個好的子菜單解決方案,但我似乎無法得到Zend_View_Helper_Navigation_Menu與我一起工作。
這裏是我的XML導航配置:
<configdata>
<nav>
<index>
<label>Index</label>
<uri>/</uri>
<pages>
<home>
<label>home</label>
<uri>/</uri>
</home>
<about>
<label>about</label>
<uri>/about</uri>
</about>
<works>
<label>works</label>
<uri>/works</uri>
<pages>
<music>
<label>music</label>
<uri>/works/music</uri>
</music>
</pages>
</works>
<posts>
<label>posts</label>
<uri>/posts</uri>
</posts>
<admin>
<label>admin</label>
<uri>/admin</uri>
<pages>
<login>
<label>log in</label>
<uri>/admin/login</uri>
</login>
<settings>
<label>settings</label>
<uri>/admin/settings</uri>
</settings>
<register>
<label>register</label>
<uri>/admin/register</uri>
</register>
<logout>
<label>log out</label>
<uri>/admin/logout</uri>
</logout>
</pages>
</admin>
</pages>
</index>
</nav>
</configdata>
這裏是我的佈局相關代碼:
echo $this->navigation()->menu()->renderMenu(
null,
array(
'minDepth' => 2,
'maxDepth' => 2,
'onlyActiveBranch' => true
)
);
當我瀏覽到「管理」,我沒有看到子菜單。如果我將minDepth
更改爲1,則可以看到該菜單及其子項在源中處於「活動」狀態。爲什麼當minDepth
設置爲2時不會渲染它們?
我做了這樣的解決辦法,但我必須複製/粘貼到每個控制器,它的工作(因爲我需要請求對象爲了做到這一點):
$pages = $this->view->navigation()->current()->getPages();
foreach ($pages as $page) {
$this->_setChildrenInvisible($page);
}
的_setChildrenInvisible()
功能:
private function _setChildrenInvisible(Zend_Navigation_Container $container) {
foreach ($container as $child) {
if ($child->hasChildren()) {
$this->_setChildrenInvisible($child);
}
$child->setVisible(false);
}
}
我只是想讓admin
的子女在子菜單中呈現。有誰知道如何解決這一問題?