2012-03-16 71 views
1

我知道CI的做法是根據控制器中的規則進行驗證,但我認爲這不是最終方法。你會推薦我如何遵循CI方式或驗證模型中的傳入數據,因此我的模型將始終保護自己免受不良數據的影響。我對MVC的理解是控制器不必保留任何程序邏輯,所有的邏輯都在模型中實現。如果你能詳細解釋爲什麼兩種方法都是好的,而不是推薦哪一種,我將不勝感激。驗證數據的位置CodeIgniter中的控制器或模型

乾杯

+2

可能重複:http://stackoverflow.com/questions/4568553/mvc-in-php-fat-model-or-fat-controller – 2012-03-17 00:08:33

回答

6

沒有銀彈。

模型中的驗證可以保護您免受程序化失效的影響。但是,用戶不能直接訪問您的模型,只能通過控制器並最終通過表單訪問。大多數情況下,您需要針對特定​​形式或特定控制器進行額外的驗證,並且這在模型中不適用。

這是一個模型外的驗證層。理想情況下,您可以創建一個獨立的驗證對象(可能綁定到特定的表單),由控制器使用。有時您可能需要在控制器本身進行額外的驗證。

驗證不是二元的。在不同的上下文中有許多層次的驗證和不同類型的驗證。您可能需要在模型和控制器中進行驗證。

相關問題