2010-06-06 44 views
4

我通常知道數據通過控制器傳遞給視圖。然而,目前在我看來我加載我的模型($ this-> load-> model('Db_model');),所以我可以在循環中使用它來從傳遞的ID數組中檢索用戶配置文件圖片路徑控制器。在視圖中加載數據庫模型來完成這個操作會使我的網站更易受攻擊或者形式不良?對我來說,它似乎超出了MVC的概念,但它的工作原理。謝謝在codeigniter的視圖中直接使用模型不好嗎?

+0

好問題!我認爲答案在技術上應該是肯定的,但是我也這麼做很方便,尤其是對於循環大型複雜的數據集。 – Kurucu 2010-06-06 09:28:44

回答

3

那麼如果你在MVC之外做某件事,那並不意味着它會在同一秒停止工作。 MVC只是一個設計模式,可以幫助您設計和維護您的網站。基本原則是模型只能與控制器通信,並且只能與控制器一起查看,所以你直接從視圖調用模型的想法不是MVC的做事方式。

如果您需要模型中的一些附加數據,爲什麼不在控制器中獲取它並將其作爲另一個參數傳遞給視圖,以便它可以輕鬆使用它?它可能會是相同數量的代碼,並且您的代碼將會更清晰。保持代碼清潔可能看起來不像是一件大事,你知道什麼時候你記得所有東西都存儲在哪裏,但是在幾個月內,如果你忘記了一些這些東西,那麼如果你的應用程序太亂了,你最終會頭痛不已。

5

我同意,但它與尺度有關。如果你正在設計一個小應用程序MVC並不重要,因爲它很容易監督整個應用程序。但是,一旦應用程序開始增長,或者如果您正在構建更大的應用程序,MVC分離變得更加重要。

例如,如果您在視圖中使用模型,這意味着設計團隊必須瞭解模型。它也可能妨礙將視圖稍後移植到另一個框架或交換模板。

+0

我相信技術上,如果模型用於只讀行爲,那麼你可能仍然認爲它是MVC。事實上,這聽起來像是一個好主意,控制器從來不需要知道。 – Natebot 2010-06-10 06:25:57

0

調查圖書館。您應該考慮創建一個庫類助手來顯示個人資料圖片。然後你可以讓庫調用模型。然後,在你看來,你只需要做:

<?php $this->profile_helper->display_picture(); ?>

其中profile_helper是你的庫類和display_picture()是你的類函數來顯示用戶的個人資料。

相關問題