2012-10-19 47 views
0

我想導航只顯示Acl允許的項目,但是我在導航和Acl之間存在問題 - 當我這樣做時,就像在互聯網上的official examplesome other resources中所示,我的導航仍顯示全部像沒有Acl的物品。將Zend_Acl和Zend_Navigation鏈接起來

在引導,我做:

$view->navigation()->setContainer($container); 
$view->navigation()->setAcl($acl)->setRole("1"); 

其中:

  • $視圖是Zend_View的對象
  • $容器是Zend_Navigation對象
  • $ ACL是Zend_Acl中對象

我有t他初始導航數組的設置應該是這樣,acl和導航對象也很好,幷包含他們應該包含的內容,所以我不會在這裏發佈它們。


目前,我們得到它的工作使用結構,如:

if(!$acl->isAllowed(/* auth data, controller, action */)) { 
    unset(/* this page from pages array */); 
} 

但這並不漂亮,不喜歡在正式例如一個班輪。


我的問題是什麼是最有可能我的問題在這裏,什麼是最常見的問題和錯誤,而開發商與Zend_Acl中結合Zend_Navigation做什麼呢?

也許我可以找到一個解決方案,這可以幫助其他開發人員遇到問題。

+0

附加問題是關於setRole(「1」) - 目前我傳遞角色的id給它,因爲角色數組只包含id。那是setRole()的正確用法嗎? – bogatyrjov

回答

1

我有一個建議。爲什麼你不能寫一個視圖幫助器(模塊,控制器,操作作爲參數)?在該視圖幫助器中,您可以檢查訪問權限。

因此,您可以使用viewhelper來檢查訪問並轉發到操作,而不是簡單地重定向。

這是你在找什麼?