我的應用程序中有構成導航樹的頁面。我想使用請求的值動態地將頁面插入到我的導航中。我已經有了查找頁面的邏輯,然後調用addPage()
方法。我正在尋找的是如何輕鬆地將Zend_Controller_Request
值傳遞給Zend_Navigation_Page::factory()
,以便我可以添加該頁面。也許甚至寫成插件?從Zend_Controller_Request創建一個Zend_Navigation_Page_Mvc實例
解決方案
AngelP得到的最接近,所以我給他的信用,但這裏是我的解決方案:
$request = $this->getRequest();
if ($page = $this->view->siteNav->findBy('id', $page_id)) {
$page->addPage(Zend_Navigation_Page::factory($request->getParams())
->setParams($request->getParams())
->setLabel($this->view->title)
->setVisible(false));
}
此代碼是從控制器動作執行。 $this->view->siteNav
是我在視圖中的Zend_Navigation
的一個實例。從Zend_Controller_Request
實例中的getParams()
很容易傳遞給Zend_Navigation_Page::factory()
,然後傳遞給Zend_Navigation_Page_Mvc
實例的setParams()
方法。
我知道如何通過使用手動構建的key =>值數組來構建`Zend_Navigation_Page`,但希望通過使用`Zend_Controller_Request`中的某些方法來獲得一些快捷方式。 – Sonny 2010-12-08 22:15:45