2010-07-12 64 views
1

我試圖找出最好的方法來動態地組裝我的管理應用程序的導航菜單,這是基於每個頁面上每個對象的結果,這樣只有包含可用於用戶將顯示在菜單中!如何動態組裝管理菜單?

作爲一個簡單的例子,說我有兩個用戶類型;祕書和經理。我有一個簡單的管理頁面來管理員工,我可以更新兩個字段; 「地址」和「出生日期」。通常情況下,這兩個字段都有一個訪問級別,允許SECRETARY執行我們的正常CRUD操作。我們的管理員有一天會出現,並決定「出生日期」需要MANAGER級別的訪問權限 - 它足夠簡單,可以隱藏頁面上的該字段或使其成爲只讀字段。現在,管理員突然決定「地址」字段也需要MANAGER級別訪問權限。鑑於此頁面上沒有任何字段可供SECRETARY用戶使用,我的菜單如何知道顯示或不顯示(沒有爲菜單選項創建單獨的規則)?

像Zend中的ACL和導航這樣的事情似乎只是將菜單選項設置爲訪問控制對象。這:http://www.tonymarston.net/php-mysql/role-based-access-control.html#menu-system似乎做我在問什麼,但我找不到任何演示或代碼塊談論這個特定的話題。

接下來的問題是,如果我必須儘可能地維護數據庫頁面上所有對象的列表,爲什麼不在數據庫中包含HTML,並讓應用程序動態組裝頁面使用View +模板? (當然可以緩存)

有什麼建議嗎?

回答

1

粗略和一般地說,在檢查單個頁面對象的權限後,我可以計算有多少個對象是有效的。如果該計數= 0,那麼我會省略頁面。

沒有代碼給你,但這是我所採取的方法的理論基礎。

+1

感謝安德魯,這或多或少是我一直在玩 - 構建一個多維數組,每個頁面作爲父節點,所有頁面對象作爲子節點 - 如果沒有子節點,則不顯示頁。這是常見的做法嗎?你知道任何包含這個的項目/框架嗎? – boatingcow 2010-07-12 11:47:11

+1

喂牛。很抱歉,我沒有資格回答你的兩個問題中的任何一個,因爲PHP是我的第一語言,我只在這裏編了7個月。祝你好運,但你的菜單! – Drew 2010-07-13 02:15:19