如何使用RequiredIf validation laravel验证日期

如何使用RequiredIf validation laravel验证日期,laravel,request,Laravel,Request,我在表单中有两个输入日期,一个是开始日期,另一个是结束日期,我正在尝试进行验证,如果已经输入开始日期,则验证是否需要结束日期 我做了那部分,但现在我不能添加其他检查,因为它不能正常工作。如果我使用“日期格式:Y-m-d”,则该字段总是必需的 如果我想在_或_equal:“之后使用,则如果开始日期为空,则该字段始终返回错误 return [ "start_date" => "nullable|date_format:Y-m-d",

我在表单中有两个输入日期,一个是开始日期,另一个是结束日期,我正在尝试进行验证,如果已经输入开始日期,则验证是否需要结束日期

我做了那部分,但现在我不能添加其他检查,因为它不能正常工作。如果我使用“日期格式:Y-m-d”,则该字段总是必需的

如果我想在_或_equal:“之后使用,则如果开始日期为空,则该字段始终返回错误

return [
        "start_date" => "nullable|date_format:Y-m-d",
        "end_date" => new RequiredIf($this->start_date !== NULL).'|date_format:Y-m-d|after_or_equal:start_date',
    ];

这就是我的验证器,如果我删除了“日期格式”和“日期等于”之后的验证,它会工作,但我需要验证所有这些数据,尝试下面的方法可以解决您的问题

return [
        "start_date" => "nullable|date_format:Y-m-d",
        "end_date" => "required_if:start_date,after_or_equal:start_date|nullable|date_format:Y-m-d",
    ];

您必须首先使用可为null的规则,然后使用required_和rest规则

$this->validate($request, array(
    'start_date' => "nullable|date_format:Y-m-d",
    'end_date' => 'nullable|required_with:start_date|date_format:Y-m-d|after_or_equal:start_date',
));