我有一個Zend_Navigation,其中運行的是由navigation.xml文件提供的數據。假設第一級(0)由兩個頁面組成,前端和後端。前端只能通過管理員角色訪問來賓角色,後端可訪問前端。Zend_Navigation:獲取當前用戶/角色可訪問的頁面
如果我做了
<?php echo $this->navigation()->menu()->setMaxDepth(0); ?>
它正確地顯示「前端」鏈接時,不登錄,無論是「前端」和「後端」的鏈接作爲管理員登錄時。
但是,顯示「前端」鏈接對客人來說沒有太大意義,因爲他們沒有任何其他頁面可以在該層次上導航到該層。所以我寧願不顯示那個導航爲客人。
我知道我可以做
<?php
if ('guest' !== $this->view->role) {
echo $this->navigation()->menu();
}
?>
,但我希望有一個更好的方式來做到這一點。
我正在尋找的是類似
<?php
if (count($this->navigation()->getPagesForRole($this->view->role)) > 1) {
echo $this->navigation()->menu();
}
?>
我無法弄清楚如何與Zend_Navigation提供的API來實現這個...我看到有一個GETPAGES()方法,但它將返回所有頁面「未過濾」。
我認爲這是一個簡單的解決方案,但我一直試圖找出過去兩個小時,並沒有發現任何東西,所以我想我看着錯誤的方向。
謝謝你的時間。
編輯:
我忘了提,導航已經使用ACL來控制的權限,它的正常工作。我唯一的問題是,我不想爲來賓顯示前端/後端導航,因爲只導航一個鏈接項目是沒用的。 對此感到抱歉。
感謝您詳細的解答。我忘了提及我已經在使用Zend_Acl,而且工作正常。對於那個很抱歉。 – jgxvx 2011-02-24 11:18:00
@ jgxvx只是確保客人沒有訪問權限,然後導航中的任何項目。 – Gordon 2011-02-24 11:54:23