2012-01-04 88 views
1

我有一些導航和acl的問題,說權限不被尊重在菜單中。 我有一個XML配置文件與菜單。在我引導我initiliaze菜單如下:zend導航部分與acl不工作

protected function _initNavigationXml() { 
    $this->bootstrap('layout'); 
    $layout = $this->getResource('layout'); 
    $view = $layout->getView(); 
    $config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml'); 

    $navigation = new Zend_Navigation($config); 
    $view->navigation($navigation)->setAcl($this->_acl)->setRole($this->_auth->getIdentity()->role); 
} 

由於菜單的特殊格式我有一個部分PHTML文件,以顯示它,如:

<?php 
$partial = array('sidemenu.phtml', 'default'); 
$this->navigation()->menu()->setPartial($partial); 
echo $this->navigation()->menu()->renderPartial(); 
?> 

菜單顯示良好,但資源不受尊重。前$部分

添加以下

echo $this->navigation()->menu()->renderMenu(); 

,菜單是正確的,並且資源得到尊重。

任何幫助或進一步的問題可以理解的;)
問候
安德烈

回答

2

renderMenu()方法包括代碼來檢查網頁是否可見給你設置的ACL權限。據我所知,如果你使用的是renderPartial(),你需要自己處理ACL檢查。

+0

謝謝你的回答, 這似乎不是邏輯,但我讀了acl在renderPartial中丟失.... 你有沒有一個關於如何在控制器中這樣做的例子,因爲我只需要菜單中的我的應用程序的儀表板? Regards – cwhisperer 2012-01-04 14:55:28

+1

可能最容易在代碼中查找'Zend_View_Helper_Navigation_Menu-> renderMenu()',它調用'_renderMenu()',然後使用'Zend_View_Helper_Navigation_HelperAbstract-> accept()'檢查頁面是否應該顯示。 – ChrisA 2012-01-04 15:32:13

+0

@ChrisAnstey +1謝謝你,你的迴應幫了我很多忙,用ACL來構建renderPartial方法。 – Marecky 2013-02-02 18:23:12