【发布时间】:2018-06-30 10:51:31
【问题描述】:
这个问题已经被问到here 之前版本的 laravel 并且还没有回答。
我有一个html form,它使用三个不同的Form Request Validations 进行验证。我能够做到这一点。但是,问题是,表单验证是一一进行的。不是同时。
如果第一个表单请求引发验证错误,则表单将返回到view,因此不会评估其余两个表单,因此无法向用户显示正确的验证错误。
我想要的是:同时用三个表单验证请求rules验证表单。
控制器:
public function store(TransportationRequest $request1, PurchaseRequest $request2, SaleRequest $request3)
{
//do actions here
}
我尝试过一一继承表单请求,但未能成功。
编辑:
更具体地回答我的问题:
我确实为purchase、transporataion 和sale 设置了三个单独的表格,它们分别使用PurchaseRequest、TransportationRequest 和SaleRequest 进行单独评估。
但有一个特殊情况,单个表单处理purchase、transporataion 和sale。 我想结合使用三个表单请求规则来验证表单,因为我不想再次编写相同的验证规则。
这个
注意:单独表格和合并表格中的字段相同。
谢谢..
【问题讨论】:
-
为什么需要 3 个单独的请求?请求背后的想法是它映射到一个传入的 HTTP 请求,其中只有一个。话虽如此,您可以(我认为 - 自己没有尝试过)创建另一个请求对象,它接受您的 3 个请求作为其构造函数的参数。 Laravel 的 IoC 容器应该能够将每个请求项传递给构造函数,然后您可以使用每个请求实例来构建一组规则和消息等。
-
我的问题是您如何设法同时发布 3 个表单,或者只是将单个表单分成 3 个部分的不同请求?原始问题的答案是您需要手动制作校准器并在每个校准器上运行
passes()方法,然后按照here 的描述收集错误 -
您能否举例说明何时需要单独的公司请求类?您链接的问题对多个请求参数没有意义。我从来没有遇到过一个坚定的要求是不够的。
-
@jonathon,我也尝试过这种方式,但在将第一个请求传递给构造函数后它也会返回查看。我不熟悉 Laravel 的 IoC 容器,也无法在 docs(5.5) 中找到它。
-
@apokryfos 问题已更新。我想将验证逻辑分开以形成请求,这就是我不使用手动验证器的原因
标签: php laravel validation laravel-5.5 request-validation