如何在Laravel中检查日期中的日期验证规则

时间:2019-05-24 12:03:14

标签: laravel validation request rules

在Laravel中,我有一个Convention对象,其中包含year,start_date和end_date。限制条件是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']
      }
    }

有什么主意吗? 谢谢兄弟。

2 个答案:

答案 0 :(得分:0)

制定自定义规则:

//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,
    ],
    //
],

答案 1 :(得分:0)

感谢您的回复。实际上,我在最初的研究方向上取得了成功:

$SameYear = "|after_or_equal:" . $this->year . "-01-01|before_or_equal:" . $this->year . '-12-31'  ;
return [
  'year' => 'required',
  'start_date' => 'required|date' . $SameYear,