Laravel在哪里/如何验证表单输入

时间:2014-02-09 12:07:00

标签: validation laravel-4 eloquent

我对使用Laravel实际验证表单输入的位置/方式感到困惑。有人向我建议我不应该在模型中执行此操作,但应该有一个单独的管理器/存储库来验证表单输入。因此,模型的表单验证和实际保存由两个单独的类处理。

然而,我看到人们直接在模型上验证表格输入(我只是观看了Jeffrey Way的Laracasts视频中的一个,他就是这样做的。)

请问有人给我指点吗?

1 个答案:

答案 0 :(得分:0)

这真的是一个意见问题,而且确实没有正确答案

有一件事是非常被接受的,因为你在MVC框架中编写应用程序,你应该至少在某种程度上接受这种模式。 MVC支持fat models, lean controllers,您的controller代码应该用于链接模型和视图,而不是用于应用程序逻辑。因此,作为最佳做法,您可能不应在controller中进行表单验证。

现在,modelform validation class - 这一个确定;)

模型这对于这种类型的逻辑来说似乎是一个非常有用的地方,如果您在此处进行表单验证,我认为您不会这样做错误。正如您所指出的,Jeffrey Way等受人尊敬的社区领导者将表单验证放入model

自定义验证类有些人认为(例如Shawn McCool),通过表单验证,您实际上并没有验证模型本身,而是表单本身,因此代码不属于model。参数是您的表单逻辑/数据可能对该表单是唯一的,而不是特定于模型。例如,您的表单可能正在输入来自许多models的数据,因此代码应保持独立。例如带有标签的博客文章。您实际上正在验证poststags上的输入,并且在Posts模型中处理表单验证可能没有意义。

TL:DR - 这真的是你觉得你可以让它让你满意的问题。没有正确的方式

在旧的Laravel论坛上有一个很好的讨论:

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