Laravel验证:required_with或required_with_all条件始终通过

时间:2018-09-17 10:56:56

标签: laravel laravel-validation

有人发过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:新鲜度,数量,价值',意味着当存在新鲜度,数量,价值和参数'taste'时,验证错误就会发生。

但这不是...

1 个答案:

答案 0 :(得分:1)

  

有时:只有在   数据数组。

由于taste没有出现在示例数组中,因此将无法验证。尝试不使用sometimes

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