检查date_start和date_end

时间:2019-07-12 09:20:17

标签: laravel date laravel-validation

我有一个开始日期和结束日期,格式...

enter image description here

在我的方法rules中,我有这个:

    public function rules()
    {
            return [
                //
                'date_revision_start' => 'after:2009-01-01|before:2023-01-01',
                'date_revision_end' => 'after:2009-01-01|before:2023-01-01'
             ];
    }

结束日期不能早于开始日期。我应该在哪里做条件? 在控制器中?

    if ($this->request->get('date_revision_start') < $this->request->get('date_revision_end')) 
    {
               return redirect()->route('revisions.index')
                    ->with('error', 'The end date cannot be before the start date!');
    }

3 个答案:

答案 0 :(得分:3)

如果您正在使用验证,则无需检查条件

public function rules()
{
    return [
        //
        'date_revision_start' => 'after:2009-01-01|before:2023-01-01',
        'date_revision_end' => 'after:date_revision_start|before:2023-01-01'
    ];
}

答案 1 :(得分:1)

您可以使用Carbon并执行以下操作:

if (Carbon::parse($request->get('date_revision_start')->greaterThan(Carbon::parse($this->request->get('date_revision_end')))) {
    return redirect()->route('revisions.index')
                ->with('error', 'The end date cannot be before the start date!');
}

如果您这样使用,则可以在控制器启动时执行此操作。

或者您可以使用验证:

public function rules() {
        return [
            'date_revision_end' => 'date|after:date_revision_start|before:2023-01-01'
         ];
    }

答案 2 :(得分:0)

您应该尝试以下操作:

public function rules()
    {
        return [
            //
            'date_revision_start' => 'after:2009-01-01|before_or_equal:2023-01-01',
            'date_revision_end' => 'after:2009-01-01|after_or_equal:2023-01-01'
         ];
}