我对使用Laravel实际验证表单输入的位置/方式感到困惑。有人向我建议我不应该在模型中执行此操作,但应该有一个单独的管理器/存储库来验证表单输入。因此,模型的表单验证和实际保存由两个单独的类处理。
然而,我看到人们直接在模型上验证表格输入(我只是观看了Jeffrey Way的Laracasts视频中的一个,他就是这样做的。)
请问有人给我指点吗?
答案 0 :(得分:0)
这真的是一个意见问题,而且确实没有正确答案。
有一件事是非常被接受的,因为你在MVC框架中编写应用程序,你应该至少在某种程度上接受这种模式。 MVC支持fat models, lean controllers
,您的controller
代码应该用于链接模型和视图,而不是用于应用程序逻辑。因此,作为最佳做法,您可能不应在controller
中进行表单验证。
现在,model
与form validation class
- 这一个确定;)
模型这对于这种类型的逻辑来说似乎是一个非常有用的地方,如果您在此处进行表单验证,我认为您不会这样做错误。正如您所指出的,Jeffrey Way等受人尊敬的社区领导者将表单验证放入model
自定义验证类有些人认为(例如Shawn McCool),通过表单验证,您实际上并没有验证模型本身,而是表单本身,因此代码不属于model
。参数是您的表单逻辑/数据可能对该表单是唯一的,而不是特定于模型。例如,您的表单可能正在输入来自许多models
的数据,因此代码应保持独立。例如带有标签的博客文章。您实际上正在验证posts
和tags
上的输入,并且在Posts
模型中处理表单验证可能没有意义。
在旧的Laravel论坛上有一个很好的讨论: