首页 > 解决方案 > 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);

标签: phplaravel

解决方案


您可以使用 Laravel 的“有时”属性,因此如果您的字段不在请求数组中,它将绕过验证。

$v = Validator::make($data, [
'productNumber' => 'sometimes|required|number',

]);


推荐阅读