Laravel 验证- 检查取决于输入值

Laravel Validation- check depend input value

在我的验证函数中,一些字段与其他字段的输入值相关。那么我该如何验证呢。

例如:这是我的验证函数

 public static function validate($data) {
    return [
        'firstname'               => 'required',
        'local_or_expat'          => 'required',
    ];
}

所以这里如果local_or_expat值为expat,那么还有一个字段country是必填的。

我该怎么做?

您可以为此使用 required_if 规则。

public static function validate($data) {
    return [
        'firstname' => 'required',
        'local_or_expat' => 'required',
        'country' => 'required_if:local_or_expat,==,expat'
    ];
}

此规则意味着如果 local_or_expat 值是外籍人士,那么也需要国家/地区。 你也可以使用规则 class。

use Illuminate\Validation\Rule;

public static function validate($data) {
    return [
        'firstname' => 'required',
        'local_or_expat' => 'required',
        'country' => Rule::requiredIf($request->local_or_expat == 'expat'),
    ];
}

您可以这样使用 required_if

return [
    'firstname' => 'required',
    'local_or_expat' => 'required|in:local,expat',
    'country' => 'required_if:local_or_expat,expat',
];

有关详细信息,请参阅 Laravel docs