簡體   English   中英

Laravel 時間驗證規則

[英]Laravel validation rules for time

我如何為start_dateend_date是否相等制定驗證規則,僅驗證end time必須大於start time

    $rules = [
        'start_date' => 'required|date_format:Y-m-d',
        'end_date' => 'required|date_format:Y-m-d|after_or_equal:start_date',
            'start_time' => 'nullable|date_format:H:ia',
            'end_time' => 'nullable|date_format:H:ia|after:start_time'
        ];

您可以為此創建自定義驗證

<?php

namespace App\Rules;

use Carbon\Carbon;
use Illuminate\Contracts\Validation\Rule;

class EndTime implements Rule
{
    private $startDate;
    private $endDate;
    private $startTime;
    private $endTime;

    /**
     * Create a new rule instance.
     *
     * @param $startDate
     * @param $endDate
     * @param $startTime
     * @param $endTime
     */
    public function __construct($startDate,$endDate,$startTime,$endTime)
    {
        //
        $this->startDate = $startDate;
        $this->endDate = $endDate;
        $this->startTime = $startTime;
        $this->endTime = $endTime;
    }

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        $startDate=Carbon::createFromFormat('Y-m-d',$this->startDate);
        $endDate=Carbon::createFromFormat('Y-m-d',$this->endDate);
        $startTime = Carbon::createFromFormat('H:ia',$this->startTime);
        $endTime = Carbon::createFromFormat('H:ia',$this->endTime);
        if($startDate==$endDate &&$endTime<$startTime){

            return false;
        }

        return true;
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'The validation error message.';
    }
}

在你的規則中

 $rules = [
        'start_date' => 'required|date_format:Y-m-d',
        'end_date' => 'required|date_format:Y-m-d|after_or_equal:start_date',
        'start_time' => 'nullable|date_format:H:ia',
        'end_time' => ['nullable', 'date_format:H:ia',new EndTime($request->start_date,$request->end_date,$request->start_time,$request->end_time)]
    ];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM