可能重複:
Zend Framework - multiplate navigation blocksZend_Navigation:有麻煩麪包屑來渲染使用多個容器
我試圖讓麪包屑在我的應用程序呈現(他們不露面任何地方,甚至不包括主頁,它具有相應的Zend Page Uri對象),其具有多個導航區域 - 主要和實用程序。對於菜單生成,我有一個MenuController我與利用佈局中呈現:
$this->layout()->utility = $this->action('render', 'menu', null, array('menu' => $this->utilityId));
$this->layout()->nav = $this->action('render', 'menu', null, array('menu' => $this->mainMenuId));
的utilityId
和mainMenuId
性質的數字,從數據庫中抓起。
Menu控制器的render方法只是構建一個數組並創建一個Zend Navigation對象,然後調用setContainer並將其設置爲該容器。這是僞代碼,因爲它比較長:
// MenuController.php
private function renderAction() {
$itemArray[] = array('label' => $label, 'uri' => $uri); // in a loop
$container = new Zend_Navigation($itemArray);
if ($container instanceof Zend_Navigation_Container) {
$this->view->navigation()->setContainer($container);
$uri = $this->_request->getPathInfo();
$item = $this->view->navigation()->findByUri($uri);
$item->active = true;
}
}
所以這個render方法在實用程序和nav的佈局中被調用兩次。
編輯: 我認爲這個問題是我需要指定$容器,所以我的代碼將
$this->navigation($container)->breadcrumbs();
但是因爲我使用$this->action('render', 'menu')
的$container
變量設置那裏,沒有返回,有沒有一種方法可以用其他方式指定容器?可能使用$this->layout()->nav
和指向容器的屬性。
This看起來像它的同一個問題,有人建議設置/獲取他們Zend_Registry
,也許我會嘗試了這一點。
啊。我沒有層次結構,但如果我指定了setMinDepth(0),它應該至少吐出主頁的麪包屑,對吧?也許我會做一個測試網站,並且有一個層次結構。 – 2009-12-18 17:01:17