php - Laravel,如果请求不为空,则检查条件
问题描述
我在 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);
解决方案
您可以使用 Laravel 的“有时”属性,因此如果您的字段不在请求数组中,它将绕过验证。
$v = Validator::make($data, [
'productNumber' => 'sometimes|required|number',
]);
推荐阅读
- javascript - 使用 ui-router 多次调用 AngualrJS 指令
- pipenv - 获取由 `pipenv update` 更新的软件包列表
- python - Python:列表数组中的唯一值
- javascript - 如何在不包含源文件的情况下在 typescript (tsdx) 中编译项目?
- javascript - 如果特定点之后存在特定单词,则正则表达式不匹配 url?
- javascript - 具有功能的js按钮生成器
- excel - 仅保存为启用宏的文件
- c# - 试图理解 Task.Run + async + Wait()/Result
- prometheus - 当某些数据不存在时如何停止触发警报?
- matlab - 分配到元胞数组中的数组