如果視圖是從控制器提供的,那麼可以通過post傳遞在該視圖中生成的數據並將其直接傳遞給模型,或者是否需要通過控制器返回提供視圖並從控制器調用模型?MVC混淆通過控制器將數據從視圖傳遞到模型
回答
在MVC不可知論的方法中,我會說回到模型的視圖是correct approach。純粹主義者可能會說總是回到控制器。
從here ...註釋
模型管理的行爲和應用領域的 數據, 響應有關其狀態(通常是從 視圖)的信息 請求和響應通過 更改狀態(通常來自 控制器)。
短語「通常」是關鍵。模式在一定程度上用於可管理性和可維護性。有時模式是以可維護和可管理的方式完成目標的障礙,有時會被過度使用。
我會認識到,在這種情況下(小規模),任何一條路線都可以正常工作......但它也是關於如何在廣泛的應用中解決問題。
在CodeIgniter視圖中從控制器獲取它們的數據,該控制器解複用/驗證參數並從模型中檢索合適的數據。重要的是:
視圖被輸出。視圖不直接與模型耦合,因爲它們定義了HTML/XML/JSON/CSS(頁面,頁面的邏輯部分或輸出數據的其他片段,如API和資源)。這意味着你不要從CI中的視圖調用模型。
控制器是代理。控制器和模型不產生輸出。控制器接受GET和POST請求併爲視圖打印結果所需的調用,通常檢查參數並複用多個模型調用以獲取所有適當的數據。
模型獲取和放入數據。模型應以不可知的格式返回其數據:作爲模型的數據對象,或更一般(但一致)的數據散列。返回的模型數據越清晰,您將在視圖和模型之間發現的耦合越少(並且您將能夠重複使用模型片段的次數越多)。
CI中有幾個地方,你可能會發現重疊:
- 的JavaScript往往結束了相關的意見(和可能做這樣的事情的驗證,通常的控制任務)。您可以通過將Javascript移出視圖來改善這種情況(適用於較大的部分,對於較小的部分不太適用)。
- 在PHP中,返回哈希(鍵/值數組)比返回對象(代碼少,但是類型安全性降低)更容易。這通常是耦合的來源。
- 共享輸出的東西通常會進入控制器(您可以通過將它移動到CI幫助程序庫中避免這種情況)。
目標是讓您的視圖不知道您的模型,只是它們從它們接收符合特定規範的數據。控制器只是獲取和放置(它們既不生成HTML輸出,也不直接訪問數據),模型主要是SQL或其他形式的獲取數據並將其填充到結構化的東西中。
是的,您將表單數據提交給控制器功能。該函數然後處理數據並調用視圖。
如果您嘗試任何其他方式,您將以代碼地獄結束。
一個函數可以處理表單的原始顯示和表單的提交。
只需檢查表單是否已提交,如果是,處理它的數據,否則顯示錶單。
function login(){
if($this->input->post('submitted')==1){
//process the form data
}else{
//show the form
}
}
- 1. MVC從模型通過控制器傳遞對象到視圖
- 2. 將模型數據從視圖傳遞到控制器
- 3. 通過ajax將數據從視圖傳遞到控制器
- 4. 將數據從控制器傳遞到控制器到模型
- 5. 將數據從MVC模型傳遞到角度控制器
- 6. 在MVC中將數據從視圖傳遞到控制器spring
- 7. MVC - 將數據從視圖傳遞到控制器
- 8. 將模型對象數據從視圖,控制器傳遞到模型?
- 9. 將數據傳遞給控制器通過Ajax從視圖
- 10. 從數據傳遞到控制器從視圖與C#/ Razor MVC
- 11. 將模型從視圖傳遞到控制器
- 12. 將模型從視圖傳遞到控制器的問題
- 13. 無法將模型從視圖傳遞到控制器。
- 14. MVC4將模型從視圖傳遞到控制器
- 15. 將NG模型從視圖傳遞到控制器角度js
- 16. 將模型陣列從視圖傳遞到控制器
- 17. 將數據從視圖控制器傳遞到另一個視圖控制器
- 18. 將數據從表格視圖控制器傳遞到視圖控制器
- 19. ASP .NET MVC 3 - 將參數從視圖傳遞到控制器
- 20. ASP.NET MVC:從視圖傳遞數據到控制器(Ajax vs jQuery)
- 21. 從視圖傳遞給控制器的模型數據爲NULL
- 22. MVC部分視圖將模型傳遞給控制器
- 23. MVC將數據從模型傳遞到視圖
- 24. 將模型數據從視圖傳遞到控制器並使用它的值
- 25. 視圖不傳遞模型到控制器 - ASP.Net MVC
- 26. 通過MVC 2中的jquery從視圖傳遞參數到控制器
- 27. 將數據從控制器傳遞到視圖並返回到控制器
- 28. 在cakephp中將數據從視圖傳遞到控制器
- 29. 將數據從視圖傳遞到控制器問題
- 30. 如何將輸入數據從視圖傳遞到控制器
所以我會從視圖調用模型? – roger 2010-11-30 21:35:58