我有一个包含两个部分 A &的乙
A 有以下字段。 名称,结果
B 有以下字段。 NAME1,RESULT1
不,我想确保用户至少填写一个部分才能继续。
这就是我想要做的。
$this->validate($request, [
'name' => 'required',
'result' => 'required',
'name1' => 'required',
'result1' => 'required'
]);
这会验证两个部分字段,但我想至少验证一个部分。
答案 0 :(得分:1)
您可以使用Required Without
:
$input = $request->all();
if(array_key_exists('name', $input) && array_key_exists('name1', $input) ){
echo "Either of the section is required";
}
if(array_key_exists('result', $input) && array_key_exists('result1', $input) ){
Echo"Either of the section is required";
}
$rules = [
'name' => 'required_without:name1,result1',
'result' => 'required_without:name1,result1',
'name1' => 'required_without:name,result',
'result1' => 'required_without:name,result'
];
//validating request agianst rules
$validator = Validator::make($input, $rules);
//if validation fails, will throw ValidationHttpException
if($validator->fails()) {
print_r($validator->errors());
}else{
echo "Validation passed";
}
看看这对你有用!!如果没有,您可以随时使用custom validators。
答案 1 :(得分:1)
一个选项可能是您可以检查某些输入是否为空,然后对每个检查进行验证,但这可能不是一个好方法。
您也可以尝试这种方式,这是一种更清洁的方式。
$this->validate($request, [
'name' => 'required_without:name1,result1',
'result' => 'required_without:name1,result1',
'name1' => 'required_without:name,result',
'result1' => 'required_without:name,result'
]);