2015-10-13 153 views
1

仅当'needs_login'存在时,我才想验证'account_id'。我这样做:Laravel验证:仅在另一个验证字段时验证字段

$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:请记住,我想验证ACCOUNT_ID只有needs_login存在,不检查是否ACCOUNT_ID存在,如果不needs_login。

+0

您正在使用哪个Laravel版本5.1? – kunoichi

+0

版本是4.2.17 – dani24

+0

也许不能这样做,因为我想验证如果它是真的,那么也验证其他验证,如果它是假的,则停止验证控件并让它通过。但如果你有任何想法,将不胜感激 – dani24

回答

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; 
}); 
3

你试过了required_if吗?

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

与以前相同。如果account_id存在,即使needs_login不存在,它也会尝试为account_id – dani24

+0

执行其他验证。它正在尝试执行哪些其他验证?仅当“needs_login”具有值时,才需要“account_id”。如果“needs_login”没有值,那么验证将失败。我不明白它是如何进行另一个验证的? – IllegalPigeon

+0

这是正确的答案。但是,我不认为''''''''''''数组标签应该在那里。 –