iam*_*.in 6 php validation request-validation laravel laravel-5.5
此处已针对先前版本的 laravel提出了该问题,但尚未回答。
我有一个html form使用三个不同的Form Request Validations. 我有能力做到这一点。但是,问题是,表单验证是一一进行的。不是同时。
如果第一个表单请求引发验证错误,则该表单将返回给view其余的两个表单,因此不会评估,因此无法向用户显示正确的验证错误。
我要的是:验证表单与三个表单验证请求rules在同一时间。
控制器:
public function store(TransportationRequest $request1, PurchaseRequest $request2, SaleRequest $request3)
{
//do actions here
}
Run Code Online (Sandbox Code Playgroud)
我试过一一继承表单请求,但没有成功。
编辑 :
更具体地说明我的问题:
我有三个独立的形式purchase,transporataion以及sale其使用单独计价PurchaseRequest,TransportationRequest并且SaleRequest对单个操作。
但是有一个特殊情况,在一个单一的形式处理一个purchase,transporataion和一个sale。我想使用组合三个表单请求规则来验证表单,因为我不想再次编写相同的验证规则。
这个
注意:单独表格和组合表格中的字段相同。
谢谢..
sam*_*sam 12
Illuminate\Validation\ValidationException当具有redirectTo方法的验证失败时,FormRequest 抛出异常,然后异常Handler执行重定向。
您可以通过在 try/catch 块中的控制器中手动运行表单请求来实现您想要的行为,该块捕获错误并在重定向之前组合错误包,或者如果您必须通过 Laravel 将它们注入控制器来运行它们,那么您需要添加您自己的异常处理程序来捕获所有错误,将它们组合起来,然后在最终的表单请求运行后重定向。
但是,值得注意的是,这两种方法都不是很好:它们很麻烦,并且会给您带来比它们解决的问题更多的问题。如果你想编写一个可维护的应用程序,你应该尽量坚持 Laravel 做事的方式。
存在表单请求以验证表单,因此,每个表单应该有一个表单请求,如果您希望从不同的规则集组成表单请求,那么应该在表单请求中完成,例如:
php artisan make:request StoreMultipleForm从rules方法StoreMultipleForm中rules为每个其他表单请求获取 ,然后将它们一起返回,例如:
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$formRequests = [
TransportationRequest::class,
PurchaseRequest::class,
SaleRequest::class
];
$rules = [];
foreach ($formRequests as $source) {
$rules = array_merge(
$rules,
(new $source)->rules()
);
}
return $rules;
}
Run Code Online (Sandbox Code Playgroud)在您的控制器中使用新的组合表单请求,例如:
public function store(StoreMultipleForm $request)
{
// Do actions here.
}
Run Code Online (Sandbox Code Playgroud)这种方法的优点是它是自包含的,它遵循一个表单请求的期望,不需要更改您正在合并的表单请求,如果您需要添加此表单独有的其他规则,您可以在不创建另一个表单请求的情况下这样做。
| 归档时间: |
|
| 查看次数: |
11714 次 |
| 最近记录: |