首页 > 解决方案 > 如何在 Laravel 中检查日期验证规则中的年份

问题描述

在 Laravel 中,我有一个带有 year、start_date 和 end_date 的 Convention 对象。约束是 start_date 和 end_date 字段属于 year 字段。

我想使用请求验证,但似乎没有可用的规则符合我的需要。

我想要这样的东西(但它不起作用):

    class ConventionRequest extends FormRequest
    {
      public function rules() {
       return [
         'year' => 'required',
         'start_date' => 'required|date|after_or_equal:year-01-01',
         'end_date' => 'required|date|before_or_equal:year-12-31']
      }
    }

标签: laravelvalidationrequestrules

解决方案


制定自定义规则:

//YearIsGreater Rule class

public function passes($attribute, $value)
{
    $date = DateTime::createFromFormat("Y-m-d", $value);
    $year = $date->format("Y");

    return $year > request('year');
}

并像那样使用它

return [
    'year' => 'required',
    'start_date' => [
        'required',
        'date',
        new YearIsGreater,
    ],
    //
],

推荐阅读