我在Laravel中有一个表单,提交和验证工作正常,但是我也在进行自定义验证,以对照数据库检查数据(进行清理)。
问题是,如果只填写每个字段,我只想执行此验证。换句话说,如果不需要输入因而没有填写,我不希望它因与数据库中的数据不匹配而失败。
例如,我在刀片上有一个表单输入:
<td>{!! Form::select('productNumber', $img->productNumber) !!}</td>
在控制器中,我正在根据服务检查此内容以确保其为有效数据
if(!$productCheckService->validGroupCode($request->productNumber))
return back()->withErrors("Invalid group: ".$request->productNumber);
如果填写,这可以工作,但是如果该字段为空,我想绕过该检查。换句话说,不需要该字段,因此不需要对可能为空/空的字段进行数据有效性检查
我正在下面执行此操作,但是由于某种原因它为空时它仍然会失败。我完全想念什么吗?我认为在检查之前检查它是否为空应该足够。
if(!empty($request->productNumber))
if(!$productCheckService->validGroupCode($request->productNumber))
return back()->withErrors("Invalid group: ".$request->productNumber);
答案 0 :(得分:0)
您可以使用Laravel的“有时”属性,因此,如果您的字段不存在于请求数组中,它将绕过验证。
$v = Validator::make($data, [
'productNumber' => 'sometimes|required|number',
]);