需要一个字段单独的条件验证器

时间:2019-06-06 13:55:44

标签: php laravel validation

我想接受我的update验证,符合以下条件:

  • firstnamelastname存在,因此是必需的,但未提供deceased_at
  • deceased_at单独给出

这很有意义,因为我们可以更新任何字段,但是当我们记录某人的死亡时,我们将永远不会更改任何字段值。

    $validator = Validator::make($request->all(), [
        'firstname' => 'required_unless:deceased_at|max:255',
        'lastname' => 'required_unless:deceased_at|max:255',
        'deceased_at' => 'required_without_all:firstname,lastname|date'
    ]);

required_without_all使用起来很麻烦,因为我必须提到每个字段。我更喜欢required_alone之类的东西。

有什么选择?

1 个答案:

答案 0 :(得分:2)

我认为您可以继续使用if案例吗?

$validator = Validator::make($request->all(), $this->rules($request));

...

protected function rules(Request $request) : array
{
    return $request->has('deceased_at')
        ? ['deceased_at' => 'required|date']
        : [
            'first_name' => 'required|max:255',
            'last_name' => 'required|max:255',
        ]
}