Laravel 5.2条件验证

时间:2016-08-21 02:14:11

标签: php validation laravel laravel-5.2

我最初将字段first_namelast_namepasswordemail作为我注册表单中的字段。我需要添加一个注册为业务的选项。

我的初始验证规则:

protected function validator(array $data)
{
    return Validator::make($data, [
        'first_name' => 'required|max:255',
        'last_name' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|min:6|confirmed',
    ]);
}

我需要添加business_name字段。我需要验证:

需要{p> first_namelast_name xor business_name

如何在Laravel 5.2中执行此操作?我正在查看sometimes规则 - 但我不确定这是否应该如何完成。

编辑:

我想这几乎可以通过以下方式完成:

protected function validator(array $data)
{
    return Validator::make($data, [
        'first_name' => 'sometimes|max:255',
        'last_name' => 'sometimes|max:255',
        'business_name'=>'sometimes|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|min:6|confirmed',
    ]);
}

虽然根据我对sometimes规则的理解,它只会验证输入数组中是否存在键,因此first_name可能存在,而last_name可能是非存在的,仍将作为"传递"验证。这不是我喜欢的行为。

1 个答案:

答案 0 :(得分:3)

您可能正在寻找的是required_without:foo,bar,...

该验证规则说'验证字段必须存在且仅当其他任何指定字段不存在时才为空'。

所以你可能有business_name => required_without:first_name,last_name