我使用PHP工作,瞭解MVC的工作原理。有一件事我不確定MVC。在View中直接創建Model對象而不通過Controller傳遞它是一種很好的做法,因爲有時不需要在Controller中處理Model?這樣做有什麼不利嗎?MVC Patern,視圖中的模型
回答
你view
只顯示效果,所以new Model()
必須去控制,後來被傳遞給查看。
是 - 你的觀點不應該需要依靠模型保持相同。
說例如,您使用的模型具有->forename
和->surname
屬性。在你看來,你可以直接調用它們。
然後,您稍後決定要爲模型添加增變器和訪問器(獲取器和設置器),因此您將使用->getForename()
和->getSurname()
,因爲您要對它們執行一些預處理以確保大寫是正確的。
現在您需要瀏覽所有控制器和的視圖,因爲使用情況需要更改。
如果您想而不只是做了所有的模型處理您的控制器,然後通過一套標準化的數據的視圖,你只需要更新您的控制器。
的視角不應該期望模型的話,它應該只是要求它從控制器獲取特定數據。
你可以做這樣的事情在你的控制器:
$view = new View('my.file', [
'user' => [
'forename' => $user->forename,
'surname' => $user->surname,
],
]);
這仍然給你一個$user['forename']
在視圖中使用,但現在數據的格式是由控制器,而不是型號來了。針對MVC
概念
很好的答案。人們不明白MVC的最大好處是可擴展性。毀了那個,你可能不會使用這個模式。 – Alternatex 2014-11-24 10:54:37
「模型」不是一個對象。因此,你的答案的前提是錯誤的。最終結果是控制器中泄露的域邏輯。另外,「觀點」不是一個曇花一現。 – 2014-11-24 11:40:35
@tereško我從來沒有在我的回答中提到「對象」或「模板」這幾個字。我使用了對象語法來演示如何訪問模型中的數據**作爲示例**,但我真的不理解您的評論,並且贊成 – Joe 2014-11-24 11:44:59
- 1. MVC - 另一個模型視圖中的模型視圖
- 2. 驗證模型和視圖模型mvc
- 3. ASP.NET MVC視圖模型傳遞到不同的視圖模型
- 4. 連接MVC模型視圖和關聯的Knockout.js視圖模型
- 5. asp.net MVC 3模型視圖中的
- 6. MVC中的模型到視圖通信?
- 7. MVC視圖模型範圍
- 8. 模型視圖在MVC
- 9. MVC視圖模型冗餘
- 10. MVC視圖模型解耦
- 11. 強類型的MVC視圖模型
- 12. Mvc模型綁定在視圖中?
- 13. 模型在mvc aspx視圖中爲null
- 14. MVC多視圖模型和ModelState中
- 15. MVC 5 - 視圖中的列表視圖(不同的模型)?
- 16. asp.net mvc視圖模型和提取模型類中的數據
- 17. 無法將視圖模型傳遞給MVC中的視圖
- 18. mvc多個模型的視圖
- 19. MVC訪問的視圖模型在
- 20. ASP.NET MVC視圖模型和DropDownList的
- 21. 的NHibernate +視圖模型+ MVC +樂觀鎖
- 22. Mvc - 帶有視圖模型的表格
- 23. 視圖模型在asp.net mvc的5
- 24. MVC:模型是視圖的ASPX
- 25. Asp.net MVC模型的視圖和佈局
- 26. 不同模型的多視圖MVC PartialView
- 27. 模型視圖控制器中的模型視圖控制器
- 28. ASP.NET MVC視圖模型 - 如何在視圖中顯示數據?
- 29. MVC 3:在一個視圖中顯示視圖模型項目
- 30. ASP.NET MVC在不同視圖中使用視圖模型
我認爲你犯了一個錯誤......你需要正確地瞭解MVC。 [如何模型的結構應(http://stackoverflow.com/questions/5863870/how-should-a-model-be-structured-in-mvc/5864000#5864000) – IROEGBU 2014-11-24 09:37:43
'因爲有時候沒有必要處理控制器中的模型「 - 儘管這可能是事實,但模型幾乎總是能夠改變它自己的狀態。視圖層不適合讓這種情況發生。 – thpl 2014-11-24 09:37:57
您可能會從閱讀[這個答案]中受益(http://stackoverflow.com/a/16596704/727208) – 2014-11-24 11:45:36