Laravel 5 - 根据需要验证数组,但允许传递空数组

新手上路,请多包涵

我正在使用验证器验证 Laravel 5.4 中的请求,请参阅文档: https ://laravel.com/docs/5.4/validation#validating-arrays

基本上,它是控制器中的这段代码:

 public function createSomeResource(Request $request)
{
    $this->validate($request, [
        'items' => 'required',
    ];
    ...
}

我想要求字段“items”存在并且这段代码做到了,但问题是当“items”字段为空数组时验证失败,即

{
    "fields": []
}

,这是一种不受欢迎的行为。我知道这是“必需”参数的记录行为,但我没有看到任何“干净”的解决方法。我也试过:

 public function createSomeResource(Request $request)
{
    $this->validate($request, [
        'items' => 'required_unless:items,[]',
    ];
    ...
}

但它也失败了,可能是因为文档说它在“required_unless”子句之后使用不同的字段,但我对此并不完全确定。

你能建议我一种方法来要求字段“项目”的存在而不禁止空数组吗?

编辑:我想到的另一种“显而易见”的方法是使用“present|array”规则,它几乎可以满足我的要求,但不幸的是,空字符串也通过了该验证规则,这可能是Laravel,也许不是——我在 Laravel github 存储库上为它开了一个问题: https ://github.com/laravel/framework/issues/18948

原文由 Rafael Korbas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 396
2 个回答

尝试这个:

 public function createSomeResource(Request $request)
{
    $this->validate($request, [
        'items' => 'present|array',
    ];
    ...
}

原文由 silentavt 发布,翻译遵循 CC BY-SA 3.0 许可协议

尝试:

 public function createSomeResource(Request $request)
{
    $this->validate($request, [
        'items' => 'required|array|min:1',
    ];
    ...
}

来自 Laravel 文档:

min:value 被验证的字段必须有一个最小值。字符串、数字、数组和文件的计算方式与大小规则相同。

原文由 ImLeo 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏