【问题标题】:How do I write a before-or-equal-date validation that compares to the current date?如何编写与当前日期相比的之前或相等日期验证?
【发布时间】:2020-02-22 17:41:06
【问题描述】:

我是 Laravel 新手,正在使用 Laravel 6.x。我需要编写一个验证来查看用户在表单上提供的日期(通过 JQuery 日期选择器),以确保用户选择了当前日期或之前的日期。如果不在我的表达式中使用撇号,我无法弄清楚如何表达当前日期,这会让 Laravel 正确理解验证。

例如,如果我写:

'sleep_date' => ['required', 'before-or-equal-date: Date(Y-m-d)']

这是行不通的,因为 Date 函数的参数周围没有撇号。但是如果我在这个例子中添加撇号,Laravel 会说有一个语法错误:

'sleep_date' => ['required', 'before-or-equal-date: Date('Y-m-d')']

如何编写代码以使其按预期工作?

【问题讨论】:

    标签: php laravel date


    【解决方案1】:

    你可以concatenate当前日期加点:

    'sleep_date' => ['required', 'before_or_equal:' .  Date('Y-m-d')]
    

    你也可以使用 laravel now() helper 代替 Date() 以同样的方式:

    'sleep_date' => ['required', 'before_or_equal:' . now()->format('Y-m-d')]
    

    【讨论】:

    • 别担心,我有一段时间没有使用该规则并去检查文档。 ;)
    • @Tpojka - 你在文档中哪里找到的?我在文档中没有找到这种情况的任何示例,至少在验证页面中没有,这是我希望找到的。
    • @Henry 您可以在Validation Available Validation Rules: before_or_equal:date 下找到文档,没有明确的示例,只是对其工作原理的解释
    • @porloscerros - 我已经找到那个页面了,没问题。我看不到任何将当前日期纳入验证的方法,所以我想知道您和/或 Tpojka 在哪​​里找到了使用连接运算符的技术。是在手册的某个地方吗?
    • @Henry 哦,好吧,我将这种技术与 php 经验结合起来。由于在文档中说“正在验证的字段必须是在给定日期之前或等于给定日期的值。”,我在 : concatenating 当前日期之后将日期传递给规则。而且由于 Laravel 将 Carbon 作为依赖项,所以我通常使用 carbon 来处理日期和时间,或者如果我只需要 Carbon:now() 则使用 now() 助手。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多