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

时间:2015-10-13 15:20:48

标签: php validation laravel

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

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

但是它不起作用,因为如果needs_login字段不存在但是account_id有一些值,那么它会尝试执行'custom_validation'。 我还尝试将'有时'参数

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

但它不起作用。

有什么想法吗?

  

P.S。:请记住,我只想在need_login存在的情况下验证account_id,如果needs_login不存在则检查是否存在account_id。

2 个答案:

答案 0 :(得分:4)

你试过required_if吗?

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

答案 1 :(得分:1)

如果你要走“有时”的路线,这样的事情适用于Laravel 5。也许你可以适应L4?看起来它是相同的in the Docs

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