我有3种类型的数据需要验证
此验证适用于单个数据
$validator = Validator::make($request->all(), [
'tests.*.finding' => 'required',//works for single test
]);
上面的数据样本
["tests"=>
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
]
此验证适用于组
中的数据$validator = Validator::make($request->all(), [
'tests.*.*.finding' => 'required',//works for group
]);
上面的数据样本
["tests"=>
[
"A" =>[
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
],
"B" =>[
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
]
]
]
如何验证组合中的单个和数据
组合数据样本
["tests"=>
[
"A" =>[
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
]
],
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
]
请帮我解决这个问题,因为第一种情况总是会给第二种情况带来错误,反之亦然。
答案 0 :(得分:5)
这是解决方案,Laravel提供了sometimes
规则来管理元素的存在,然后才开始检查下一个规则。
所以最终验证规则是。
$validator = Validator::make($request->all(), [
'tests.*.*.finding' => 'sometimes|required',//works for group
'tests.*.finding' => 'sometimes|required',//works for single test
]);
Doc for this:https://laravel.com/docs/5.4/validation#conditionally-adding-rules
答案 1 :(得分:2)
您可以按照代码修复验证数据。
$customFieldValidation = ["test_id" => 'required|numeric',
"test_two.id" => 'required|numeric',
]);
$this->setRules ( $customFieldValidation );
$customeAttributes = [
"test_three.*.id" => 'Test Three ' // custom message
];
$this->setCustomAttributes ($customeAttributes);
$this->_validate ();
我希望它对你有所帮助。