Laravel 5.2验证 - 仅在

时间:2016-12-15 16:24:10

标签: php laravel validation

所以我有以下验证:

'birth_date'             => 'date_format:Y-m-d|before:deceased_date',
'deceased_date'          => 'date_format:Y-m-d|after:birth_date',

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

要明确,这将是验证方案:

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

可以只发送一个。我只是想确定如果他们同时发送,那就检查这个人在出生前是不是死了,反之亦然。

2 个答案:

答案 0 :(得分:4)

您可以使用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',

<强>更新

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

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

答案 1 :(得分:0)

您可以使用laravel的验证规则 - required_with,如下所示:

'birth_date'     => 'required_with:deceased_date|date_format:Y-m-d|before:deceased_date',
'deceased_date'  => 'required_with:birth_date|date_format:Y-m-d|after:birth_date',
  

<强> required_with:FOO,酒吧,...

     

验证字段必须存在且仅在存在任何其他指定字段时才为空。

希望这有帮助!