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

dan*_*i24 2 php validation laravel

我只想在存在“ needs_login”的情况下验证“ account_id”。我这样做:

$rules = [
    'account_id' => ['required_with:needs_login','custom_validation']
];
Run Code Online (Sandbox Code Playgroud)

但这是行不通的,因为如果needs_login字段不存在,但account_id具有某些值,则它将尝试执行“ custom_validation”。我还尝试输入“有时”参数

$rules = [
    'account_id' => ['required_with:needs_login', 'sometimes', 'custom_validation']
];
Run Code Online (Sandbox Code Playgroud)

但这没用。

有任何想法吗?

PS:请记住,我只想在有needs_login时才对account_id进行验证,而不是在需要Needs_login时才检查是否有account_id。

Ill*_*eon 6

您是否尝试过required_if?

$rules = [
    'account_id' => ['required_if:needs_login,1']
];
Run Code Online (Sandbox Code Playgroud)


Don*_*aJo 3

如果你走“有时”路线,这样的东西适用于 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;
});
Run Code Online (Sandbox Code Playgroud)