[英]Laravel validation rules for time
我如何為start_date
和end_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.