2012-02-01 44 views
0

我一直在用CakePHP進行開發,並且Alaxos ACL插件幫助非常大。CakePHP 1.3:Alaxos ACL插件無法識別Pages Plugin

但是,我面臨一個問題,我不知道如何解決它?

我添加了一個名爲「頁」插件,但我不能讓ACL看到它,所以它被添加到允許列表/拒絕的動作。

如果我訪問插件通domain.com/pages/pages我收到以下錯誤

DbAcl::check() - Failed ARO/ACO node lookup in permissions check. 

當我檢查直通的ACL插件顯示,有一個頁面控制器沒有提到,如果我跑ACL構建功能,它只是說沒有什麼可添加的。

是因爲這個控制器被命名爲頁面,並且在Cake中已經有一個頁面控制器?

如果是我該如何解決它?是我唯一的選擇,此時手動添加到Db?我是否應該通過此插件並將頁面重命名爲其他內容?或者還有什麼我應該做的?

謝謝,

回答

1

我在這裏看到兩件事。首先像您懷疑的那樣,在您的應用程序中有兩個共享相同名稱的類是一個糟糕的主意。它可能會以某種方式給你帶來一些問題,例如錯誤的類被實例化等等。至於Cake不使用名稱空間,這不推薦。

這樣,即使你改變這個名字,就會有另外一個問題,如果你想用ACL來管理控制器是「默認」控制器(具有相同的名稱作爲插件控制器)。當路徑包含兩次相同的名稱時,ACO節點檢索出現問題,這是插件默認控制器的情況。

controllers/Pages/Pages/index 

因此,我決定跳過ACL插件支持的控制器中的插件默認控制器。

如果你是這個插件的作者,你可以(因爲PagesController已經存在)將其重命名,並在其他一些控制器比默認的控制器移動的動作。

+0

感謝您的回覆。我通過這個插件並改變了一切,以便通過'Paginas.Paginas'訪問。但是,我仍然無法獲得ACL插件來檢測它。如果我在這個控制器的'beforeFilter()'函數中添加'$ this-> Auth-> allow('*')',那麼我就可以訪問這個插件並處理所有設計。但是,當我發表評論時,我會回到相同的ARO/ACO錯誤。我現在唯一能想到的就是在ACO/ARO表中手動輸入此信息以及所有非公開行爲的信息。如果您有任何建議,請告訴我... – 2012-02-02 17:44:07

+0

如果我能夠通過手動將數據輸入到Db中來完成此項工作,我還將更新此帖子。我只是不確定爲什麼Alaxos ACL插件無法檢測到並添加它。 – 2012-02-02 17:44:56

+0

正如我告訴過你的,如果你使用一個默認的控制器(與插件名稱相同的控制器),Acl插件看不到它。我必須這樣做,因爲我曾經認爲核心AclNode類中存在一個錯誤。但實際上我幾天前意識到問題出在我身邊(http://cakephp.lighthouseapp.com/projects/42648-cakephp/tickets/1739-case-insensitive-acos-table-can-cause-duplicate -path-retrievements)。我會在幾天內嘗試發佈插件的更新。 – nIcO 2012-02-03 07:59:05