我有一個管理控制器,我想利用其他控制器中的功能(這些功能不代表某人會在瀏覽器中加載的頁面),但它無法利用這些功能,因爲其他控制器中的功能是私有的。它們是私人的,因爲我不希望公衆訪問它們。有沒有辦法讓一個控制器功能無法訪問公衆而沒有將該功能設置爲私有或保護?CakePHP:使控制器功能不可訪問
回答
public function __blah(){
// function that can't be accessed from outside, but can be called from other functions
}
是的。
關於ACL(訪問控制列表),您在CakePHP Book中有很多信息,這正是您要查找的內容。您可以使用Auth組件。
我不想製作只有auth的頁面(控制器/函數)。我在控制器中具有更多與該控制器相關的輔助函數的功能,該控制器不代表頁面。我不希望這些功能可以被公衆使用,但我希望能夠從我的管理員控制器調用這些功能來執行該功能。 – cyphun
你可以用ACL來做 –
基於我在回答彼得給你的評論已經閱讀:
您不使用管理控制器。你想用管理員的前綴: http://book.cakephp.org/view/950/Prefix-Routing
和認證: http://book.cakephp.org/view/1250/Authentication
如果你打電話 - 和多數民衆贊成你的意見怎麼聽起來像 - 一個控制器從另一個你正在做的事情完全錯誤的在MVC框架。如果它應該是可重用的代碼,它應該進入組件,如果它是關於管理操作使用前綴路由和admin_ *方法,認證組件和保護方法爲你所謂的「幫手」方法。
我從來不知道如何說出這些問題。但我擁有的是一個處理用戶相關功能的控制器,例如更改用戶的密碼。它屬於用戶控制器。我現在想添加一個管理控制器,但我希望它能夠利用用戶控制器中的私有功能。你的回答結束似乎很有趣,但我不確定我真的明白你的意思。感謝您的迴應。 – cyphun
burzum是正確的,前綴路由是你在找什麼。儘管URL'/ users/add'映射到UsersController中的函數'add','/ admin/users/add'將映射到UsersController中的'admin_add'。然後,您可以通過檢查AppController中的「admin」前綴URL參數來以任何方式要求授權。 –
說實話,我不知道如何解釋它比我提供的兩個鏈接更好。但首先,你知道MVC的含義以及它的工作原理嗎? – burzum
我看到三個可能的解決方案(它們也可以合併):
第一個解決方案是將要重用到components(如提及Burzum的)的代碼。
第二種解決方案取決於您的代碼。您可能會在控制器中執行一些應該在模型中完成的任務。在這種情況下,將相應的代碼移到模型中。
第三種解決方案是將要重用的代碼放入普通的舊PHP類和load them as vendor files。
- 1. 訪問控制器功能
- 2. 不能訪問控制器
- 3. CakePHP:是否可以從控制器訪問受保護的功能?
- 4. app.run中的訪問控制器功能
- 5. 不能訪問代碼點火器控制器功能(S)
- 6. cakephp:在同一個控制器中訪問一個變量,但功能不同
- 7. 從其他控制器訪問控制器的功能
- 8. CakePHP 2.3.0組件$控制器不可訪問
- 9. CakePHP中的控制器特定功能
- 10. 如何限制訪問控制器功能使用會話 - CodeIgniter
- 11. 訪問控制器方法變量CAKEPHP
- 12. 關於cakePHP的控制器訪問
- 13. CakePHP 3:訪問控制器的特徵
- 14. cakephp:從插件訪問控制器
- 15. CakePHP的訪問其它控制器
- 16. 不能訪問我的angularjs控制器
- 17. 如何訪問不同控制器的功能? - JavaScript MVC
- 18. 標籤欄控制器不可訪問
- 19. cakePHP登錄,多個控制器可能?
- 20. 通過訪問控制功能訪問url的具體訪問
- 21. CakePHP:在主控制器中使用插件控制器的功能
- 22. 無法從控制器功能訪問示波器
- 23. 如何在CakePHP中訪問不屬於控制器的模型
- 24. 監控功能訪問
- 25. CakePHP - 使用控制器作爲數據訪問層
- 26. 不能訪問$ scope屬性AngularJS控制器之外的動畫功能
- 27. 不能參考控制器功能ZF2
- 28. ASP.net MVC不能在控制器功能
- 29. CakePHP:控制器即使它們繼承自AuthenticatedController也是可訪問的
- 30. CakePHP控制檯不能使用shell
以一個或多個下劃線爲前綴的方法被路由器忽略,因此用於在您的控制器中創建實用程序功能的理想方式;在PHP4中。如果他們不想被訪問,爲什麼不讓他們保護?另外(因爲TS講的是一些「管理控制器」),該方法需要在AppController中供其他控制器訪問它,否則顯然無法在不導入其他控制器的情況下訪問它們(如果你這樣做,你做錯了;])。 –