使用自定義CakePHP幫助程序檢索數據庫信息的正確方法是什麼?CakePHP在助手中檢索數據庫信息的最佳方法是什麼?
回答
簡短的答案是 - 沒有。您需要從Controller中獲取數據,並將其傳遞到幫助程序獲取它的視圖。
當我開始使用MVC模式時,我在開始時有同樣的異端想法。 :)
沒有正確的方法來查找幫助器中的數據庫信息,你應該避免它。
但有一種方法可以在助手和視圖中執行: $ posts = ClassRegistry :: init('Post') - > find('all');
同樣,建議您不要在視圖中使用模型,稍後您會感謝您自己。
我不同意這個概念,我可能不會使用數據庫結果的幫手。因爲 假設我試圖顯示側欄或頁腳中的動態鏈接,我必須將結果放在每個控制器中的每個方法中。 所以很容易在助手中調用該函數來創建一個元素並在其中調用該助手。
現在你可以調用數據庫的結果助手就這樣
ClassRegistry ::初始化( '郵報') - >查找( '所有');由法赫德撰寫。
如果你已經在post模型中做了一些方法,你可以這樣調用 ClassRegistry :: init('Post') - > custom_function_name($ params);
如果你想在每個頁面上都有動態鏈接,那麼編寫一個從db中獲取鏈接的組件,然後在控制器中設置該變量,以便視圖知道它。 你有沒有AppController使用組件,如果你寫得正確,你將永遠不必將其包含在任何操作中。
http://github.com/markstory/cakephp_menu_component
或者......
編寫使用requestAction和緩存菜單的元素。當你需要時,將這個元素包含在你的視圖中。
http://bakery.cakephp.org/articles/view/creating-reusable-elements-with-requestaction
或者......
運行在你的AppController中的代碼:: beforeFilter方法和分配視圖變量的方式。
http://book.cakephp.org/view/984/Callbacks
所有這些方法都是MVC 正確而在實例化您的視圖模型是不正確並沒有任何餘地爭論它。正確的做法是,在學習CakePHP如何保持代碼的同時,讓自己保持頭痛。DRY
- 1. 將位置信息存儲在數據庫中的最佳方法是什麼?
- 2. 除了NLTK,Python的最佳信息檢索庫是什麼?
- 3. 檢索這些數據的最佳方法是什麼?
- 4. 在數據庫中存儲IP的最佳方法是什麼?
- 5. 在php中連接數據庫的最佳方法是什麼?
- 6. Solr中索引數據庫表數據的最佳方法是什麼?
- 7. 在文本框中檢查所需信息的最佳方法是什麼?
- 8. 用PHP搜索MySQL數據庫的最佳方式是什麼?
- 9. 在Firebase中存儲信息應用的數據的最佳方式是什麼?
- 10. 什麼是在Android中顯示信息的最佳方式
- 11. 在多列中展示信息的最佳方式是什麼?
- 12. 什麼是從ClaimsIdentity中檢索WindowsIdentity的最佳方法
- 13. 從文件名中檢索ID的最佳方法是什麼?
- 14. 從數據庫檢索分層數據的最佳方法
- 15. 創建公共信息模型的最佳方法是什麼?
- 16. 製作此類信息圖表的最佳方法是什麼?
- 17. 存儲應用程序信息的最佳方法是什麼?
- 18. 用NSRect信息發佈NSNotification的最佳方法是什麼?
- 19. 將信息顯示到ListFragment的最佳方法是什麼?
- 20. 在CakePHP中處理複雜數據類型的最佳方法是什麼?
- 21. 使在線數據庫可搜索的最佳方法是什麼?
- 22. 檢查mySQL數據庫中現有用戶的最佳方法是什麼?
- 23. 什麼是車輛搜索的最佳數據挖掘方法?
- 24. 「清理」要存儲在SQL數據庫中的信息的最佳方法是什麼?
- 25. 什麼是最佳搜索方法?
- 26. 在c#中連接數據庫的最佳方式是什麼?
- 27. 在Rails中建立數據庫的最佳方式是什麼?
- 28. 什麼是從數據庫檢索連續數據的最快方法?
- 29. 在服務器應用程序中存儲配置信息的最佳方法是什麼? (無數據庫)
- 30. 什麼是數據庫開發的最佳方法Android
確切地說,助手在視圖層,所以不應該獲取數據,只顯示它。您應該從控制器層的模型(即控制器動作/過濾器)中獲取數據並將其設置爲視圖層(即使用'$ this-> set()')。這將使數據可用於視圖,佈局,元素和/或助手。 – deizel 2010-07-31 21:14:37
因此,不應該通過視圖訪問會話信息,它應該通過$ this-> set()發送到視圖? – Anthony 2010-08-01 00:19:45
是的,但如果信息是一般的,就像一些設置,你可以在AppController-> beforeFilter()中設置它,所以每個視圖都會有它。 – 2010-08-01 16:23:00