【问题标题】:Laravel 5.2 conditional validationLaravel 5.2 条件验证
【发布时间】:2016-12-27 20:50:56
【问题描述】:

我最初将字段 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 字段。我需要验证是:

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 可能不存在,这仍然会验证作为“通行证”。这不是我想要的行为。

【问题讨论】:

    标签: php validation laravel laravel-5.2


    【解决方案1】:

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

    该验证规则说“只有在任何其他指定字段不存在时,验证中的字段才必须存在且不能为空”。

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

    【讨论】:

    • 完美!我在文档中完全错过了这一点。感谢您的回答。 p.s.如果我得到代表,我会投票。干杯,克里斯
    • 太棒了。很高兴它有帮助。
    猜你喜欢
    • 2016-12-29
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 2018-11-22
    相关资源
    最近更新 更多