我的laravel更新表单中有一个新添加的选择框:
<tr>
<td>{!! Form::label('statusCode', 'Active') !!}</td>
<td>{!! Form::select('statusCode', array('A' => 'Yes', 'D' => 'No')) !!}</td>
</tr>
将其设置为“是”或“否”是可行的,当我提交表单时,它会正确更新数据库记录,但是验证有些麻烦。
从技术上讲,如果我将其设置为“否”以停用图像,那么我需要的只是该图像的ID,因此我知道要停用的是该图像,但是现在,如果输入为空,它将强制对不必要的输入进行验证。 / p>
因此在此块上,如果我的选择设置为“ D”或“否”,那么我只需要输入ID:
$this->validate($request, [
'id' => 'required|numeric|unique:jfi.image_files,id,' . $id,
'prdGrpNum' => 'numeric|required',
'altGrpDesc' => 'required',
'cover1' => 'numeric|required',
'color1' => 'numeric|required',
'typeId' => 'numeric|required'
]);
但是,在下一个代码块中,我将对照数据库检查所有已填写的输入,以保持数据的卫生。
因此,对于此块,我想说“如果选择框设置为'D'/'No'并且此字段为空,请不要进行验证。否则,请对imageService进行此现有验证”
if(!$imageService->validImageTypeId($request->typeId))
return back()->withErrors("Invalid image type given");
如何使用选择框的值来允许空白字段跳过验证,但仍要验证填充的字段?
答案 0 :(得分:2)
您可以使用required_if
规则:
required_if:anotherfield,value,...
'prdGrpNum' => 'required_if:statusCode,Yes|numeric'
,其他规则也一样。