laravel 5.1 中的日期验证

Posted

技术标签:

【中文标题】laravel 5.1 中的日期验证【英文标题】:Date validation in laravel 5.1 【发布时间】:2018-10-29 10:14:46 【问题描述】:

我已经为验证输入创建了名为 EventRequest 的自定义请求。我有两个日期属性,第一个是“开始”,第二个是“结束”。 'End' 必须大于或 等于 才能开始。 注意:laravel 5.1 没有 after_or_equal 函数

这是我的代码

public function rules()

    return [
      'name'          =>'required|min:3|max:255',
      'place'         => 'required|min:3|max:255',
      'start_date'    => 'required|date|after:yesterday',
      'end_date'      => 'required|date|after:yesterday',
      'start_time'    => 'required|date_format:H:i',
      'end_time'      => 'required|date_format:H:i'
    ];

如果我设置了一条规则,例如 start_date 必须是 before:end_date 但如果它们在同一天,则会引发错误。有什么解决方案吗? 提前致谢!

【问题讨论】:

Laravel 5.3 date validator: equal to or after start_date 的可能重复项。简短的回答是 after_or_equal 是你想要的规则 @Ohgodwhy:它在 5.1 中可用吗?我认为不是 您需要使用手动Validator 来进行这样的验证。 after_or_equal 在 laravel5.1 中不可用 你解决了吗? 【参考方案1】:

开始日期在:昨天之后...所以 end_date 可以在 start_date 之后...

 public function rules()

    return [
      'name'          =>'required|min:3|max:255',
      'place'         => 'required|min:3|max:255',
      'start_date'    => 'required|date|after:yesterday',
      'end_date'      => 'required|date|after:start_date',
      'start_time'    => 'required|date_format:H:i',
      'end_time'      => 'required|date_format:H:i'
    ];

【讨论】:

after:yesterday 表示今天,after:start_date 表示tomorrow,不检查同一日期【参考方案2】:

手动使用Validator的解决方案

public function validateForm(Request $request)
    $end_date = date('Y-m-d', strtotime($request->end_date. ' -1 day' ));
    $messages = [
        "end_date.after" => "End date must be equal or greater than start date.",
    ];
    $rules = [
            'start_date'    => 'required|date|after:yesterday',
            'end_date'      => 'required|date|after:'.$end_date,
    ];
    return Validator::make($requestAll, $rules);

【讨论】:

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

如何从 Laravel 5.1 中的表而不是“用户”表中对用户进行身份验证?

我可以通过 Laravel 5.1 中的自定义请求对象验证后恢复输入字段值吗?

使用 localhost 进行 facebook 身份验证 laravel 5.1 时的应用程序域

之后:日期不接受 Laravel 表单验证中的相同日期?

Laravel 5.1 文件上传验证

Laravel 5.1 - 验证用户名、密码和如果确认 = 1