Laravel无法根据自定义日期格式验证字段

时间:2018-03-30 12:22:12

标签: laravel validation laravel-5.6

我的日期格式为30 Mar, 2018

如果我应用此'start_date' => 'required|date验证规则,则会显示The start date is not a valid date.错误消息。

我在模型中有这个代码:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Carbon\Carbon;

class Rates extends Model
{
    protected $guarded = ['id'];

    //protected $dateFormat = 'Y-m-d H:i:s';

    protected $dates = [
        'start_date',
        'end_date'
    ];


    public function setStartDateAttribute($value)
    {
        $this->attributes['start_date'] = Carbon::createFromFormat('d M, Y',$value);
    }

    public function setEndDateAttribute($value)
    {
        $this->attributes['end_date'] = Carbon::createFromFormat('d M, Y',$value);
    }

}

我有日期输入,

<input class="form-control form_datetime_start valid" placeholder="Enter Start Date" name="start_date" type="text" value="30 Mar, 2018" aria-required="true" aria-invalid="false">

即使我尝试添加此date_format:d M, Y规则,它也会显示The start date does not match the format d M.它没有考虑,Y

我在哪里错过?这个问题是什么?

1 个答案:

答案 0 :(得分:1)

您可以尝试提供自定义格式进行验证:

date_format:format

但是你需要转义逗号,因为它是规则参数分隔符,使用引号"d M, Y"

您所在领域的完整规则集:

'start_date' => 'required|date_format:"d M, Y"'

请记住documentation中陈述的内容:

  

<强> DATE_FORMAT:格式

     

验证字段必须与给定格式匹配。在验证字段时,您应该使用 日期或date_format,而不是两者。