如何使用 RequiredIf 验证 laravel 验证日期

Posted

技术标签:

【中文标题】如何使用 RequiredIf 验证 laravel 验证日期【英文标题】:How to validate a date with RequiredIf validation laravel 【发布时间】:2020-10-24 19:25:28 【问题描述】:

我在一个表单中有两个输入日期,一个是 start_date,另一个是 end_date,我正在尝试验证是否需要 end_date,如果 start_date 已经输入。

我做了那部分,但现在我不能添加其他检查,因为它不能正常工作。如果我使用 "date_format: Y-m-d",则该字段始终为必填项。

如果我想使用 "after_or_equal:",那么如果 start_date 为空,则该字段总是返回错误。

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',
    ];

这是我的验证器,如果我删除 "date_format""after_or_equal" 的验证,它可以工作,但我需要验证所有这些数据

【问题讨论】:

【参考方案1】:

您必须先使用可空规则,然后使用 required_with 和其余规则。

$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',
));

【讨论】:

【参考方案2】:

试试下面的方法会解决你的问题

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",
    ];

【讨论】:

以上是关于如何使用 RequiredIf 验证 laravel 验证日期的主要内容,如果未能解决你的问题,请参考以下文章

Larave中CSRF攻击

打字稿所需要的属性,如果其他的定义(requiredIf)

WTForms 自定义验证器 - 需要在 RadioField 上

如何在 Vue JS 中使用 Laravel 进行身份验证,以便用户在没有登录的情况下无法从 URL 进入他的页面

如果在 Laravel 中则需要

使用 laravel 验证检查唯一的日期/时间