Laravel validation:仅在存在另一个字段时验证字段


Laravel validation: validate field only if another is present

我想只在'needs_login'存在时验证'account_id'。我这样做了:

$rules = [
    'account_id' => ['required_with:needs_login','custom_validation']
];

但它不起作用,因为如果needs_login字段不存在,但account_id有一些值,那么它会尝试做'custom_validation'。我还试着把'sometimes'参数

$rules = [
    'account_id' => ['required_with:needs_login', 'sometimes', 'custom_validation']
];

但它没有工作。

任何想法?

注::请记住,我只想在needs_login存在时验证account_id,而不是在needs_login存在时检查account_id。

你试过required_if吗?

$rules = [
    'account_id' => ['required_if:needs_login,1']
];

如果你想要"有时"的路线,这样的东西适用于Laravel 5。也许你能适应L4?在文档中看起来是一样的。

$validation = Validator::make($formData, [
    'some_form_item' => 'rule_1|rule_2'
]
$validation->sometimes('account_id', 'required', function($input){
    return $input->needs_login == true;
});