为什么laravel在控制器而不是Eloquent模型中定义验证?

时间:2016-10-31 01:37:59

标签: php laravel

我正在阅读the laravel documentation,对验证有一些疑问

如果Web服务器将为桌面用户提供Web界面,并为移动用户提供api接口,则会出现问题:它将在api控制器和Web控制器中定义两次验证,它是重复的。

如果有另一个共同开发者来开发一个大型项目,他应该知道以前开发人员定义的验证,这对协作开发不利

我认为应该在同一个地方定义验证逻辑,比如Rails中的ActiveRecord

2 个答案:

答案 0 :(得分:1)

您可以在Requests文件夹中创建一个Request文件,并以控制器方法注入该文件,它将自动验证请求。请继续阅读Laravel验证文档here,您将精心找到此方法。

答案 1 :(得分:1)

您可以向模型中添加一个方法,例如'getValidator',它为您提供验证器,然后在控制器中您只需要这个。

但是,验证器大多数时候都希望验证来自(用户)输入的输入。想象一下必须应用于多个模型或复杂关系的输入。说验证确实是/ one模型的一部分会很奇怪。最后它只是验证输入,所以你需要在你的控制器中。

在您的情况下,更好的抽象方法可能是解释“web”部分als 连接到您的API的应用程序。然后让API成为与后端进行交互的唯一方式,从而仅在1个位置(API)进行验证。

最后,由您决定如何构建它。