Laravel 5.2 验证 - 仅在发送另一个日期时使用 before 和 after

Bil*_*son 0 php validation laravel

所以我有以下验证:

'birth_date'             => 'date_format:Y-m-d|before:deceased_date',
'deceased_date'          => 'date_format:Y-m-d|after:birth_date',
Run Code Online (Sandbox Code Playgroud)

问题是这些都不是必填字段。有人可以输入没有birth_date 的死亡日期,反之亦然。目前,如果您发送没有出生日期的已故日期,则after验证失败。有没有办法检查before/after检查其他日期是否已发送?

需要明确的是,这里是验证场景:

  • 均已发送:在验证之前和之后检查
  • 只有一个发送:在验证之前和之后忽略

只寄一份也可以。我只是想确定,如果他们同时发送两者,它会检查该人是否在出生前没有死亡,反之亦然。

Ami*_*pta 5

您可以使用required_withbail两者来解决您的问题:

'birth_date'     => 'bail|required_with:deceased_date|date_format:Y-m-d|before:deceased_date',
'deceased_date'  => 'bail|required_with:birth_date|date_format:Y-m-d|after:birth_date',
Run Code Online (Sandbox Code Playgroud)

更新

您可以尝试sometimes解决您的问题:

$validation = Validator::make($formData, [
    ...
]
$validation->sometimes('birth_date', 'before:deceased_date', function($input){
    return ($input->birth_date && $input->deceased_date);
});
Run Code Online (Sandbox Code Playgroud)