仅在特定输入上应用特定验证规则时,仅当另一个输入也存在并设置为特定值时

时间:2016-11-06 22:09:12

标签: laravel laravel-5.3 laravel-validation

简单地说,我想做的是检查数据库中特定输入exists的值,但我希望仅当另一个输入是exists规则时才应用type规则也具有特定价值。

例如,假设我的表单中包含名为id的选择和名为<select name="type"> <option value="0">Type0</option> <option value="1">Type1</option> </select> <input type="text" name="id"> 的文本字段。

type

如果1存在且等于id,我想检查数据库表exists中的users输入exists,否则{ {1}}规则根本不应用,而其他验证规则将正常应用。

修改

最好,我想使用表单请求进行验证。可以使用表单请求来实现吗?

1 个答案:

答案 0 :(得分:1)

您可以conditionally添加规则:

$v = Validator::make(...);

$v->sometimes('id', 'exists:table,column', function($input) {
     return $input->get('type') == 1;
});

<强>更新

对于form request,您可以这样做:

$rules = [
    ...,
];

if ($this->get('type') == 1){
    if (isset($rules['id'])){
        $rules['id'] .= '|exists:table,column';
    }
    else {
        $rules['id'] = 'exists:table,column';
    }
}

return $rules;