2014-02-09 28 views
0

我對使用Laravel在何處/如何實際驗證表單輸入感到困惑。有人向我建議,我不應該在模型中這樣做,但應該有一個單獨的管理器/存儲庫來驗證表單輸入。因此,模型的表單驗證和實際保存由兩個獨立的類來處理。Laravel在哪裏/如何驗證表單輸入

然而,我看到人們直接在模型上驗證表單輸入(我只是看了Jeffrey Way的Laracasts視頻中的一個,他完全是這樣做的)。

有誰能給我一些方向嗎?

+0

我個人更喜歡做的控制器,但我不知道這是正確的方式/最佳途徑去做吧。 – 2014-02-09 12:09:00

回答

0

這真的是一個意見問題,真的沒有正確的答案

有一件事是非常被接受的,因爲你正在MVC框架中編寫一個應用程序,所以你應該至少在某個層次上接受這個模式。 MVC傾向於fat models, lean controllerscontroller代碼應該用於鏈接模型和視圖,而不是應用程序邏輯。因此,作爲最佳做法,您應該不會在controller中進行表單驗證。現在

modelform validation class - 這一個是少一定;)

模式,這似乎是對這種類型的邏輯的非常有用的地方,我不認爲你可以這樣做錯誤如果您在此處進行表單驗證。正如你所指出的那樣,尊重社區的領導人,如傑弗里路作秀表單驗證在model

自定義的驗證類一些人認爲(肖恩·麥庫爾例如)與表單驗證,你實際上並沒有驗證模型,本身,但形式本身,因此代碼不屬於model。這個觀點是你的表單邏輯/數據對於這種形式可能是唯一的,而不是特定於模型的。例如,您的表單可能會輸入來自多個models的數據,因此代碼應保持獨立。例如一個帶有標籤的博客文章。您實際上正在驗證poststags上的輸入,並且在Posts模型中處理表單驗證可能沒有意義。

TL:DR - 這確實是一個你感覺如何讓你的工作滿意的問題。沒有正確的方式

上有老Laravel論壇上這是一個相當不錯的討論:

http://forumsarchive.laravel.io/viewtopic.php?id=1199