Laravel验证:required_with或required_with_all条件总是通过

问题描述 投票:1回答:1

类似的帖子是here,但它仍然不适用于我的情况。

$v = \Validator::make($keys, [
            'overall' => 'required',
            'taste' => 'sometimes|required_with_all:freshness, quantity, value',
            'freshness' => 'sometimes|required_with_all:taste, quantity, value',
            'quantity' => 'sometimes|required_with_all:taste, freshness, value',
            'value' => 'sometimes|required_with_all: taste, quantity, freshness'
        ]);

dd($v->fails()); //-> false should be true

我想总结一下我在做什么:

  • 我有一个针对不同类型的优惠的评级系统
  • “总体”总是需要的,无论哪种提供类型都无关紧要。
  • 像食物一样的报价有“整体,味道,新鲜度,数量和价值”的评级类型
  • 但是,因为有许多报价类型“味道,新鲜度,数量和价值”不是唯一的评级类型。将来会有更多(例如电子书的评级(你不会评价口味等))
  • “味道,新鲜度,数量和价值”只是可选的,但如果只存在一个,则应该要求一切。

我尝试用“required_with”来做,但它不起作用。

我的示例数组是:

array:4 [
  "overall" => 0
  "freshness" => 1
  "quantity" => 2
  "value" => 3
]

随着“味道”的缺失。

那么我做错了什么?

如果我完全理解文档:

required_with_all:foo,bar,...仅当存在所有其他指定字段时,验证字段才必须存在。

这意味着:

例如。 'taste'=>'有时| required_with_all:新鲜度,数量,价值',意味着当存在新鲜度,数量,价值并且不存在参数'味道'时,将发生验证错误。

但它不......

laravel laravel-validation
1个回答
1
投票

有时:只有在数据数组中存在字段时才会验证字段。

由于taste未在您的示例数组中显示,因此无法验证。尝试没有sometimes

'taste' => 'required_with_all:freshness, quantity, value'

© www.soinside.com 2019 - 2024. All rights reserved.