【问题标题】:Laravel cannot validate field against custom date formatLaravel 无法根据自定义日期格式验证字段
【发布时间】:2018-09-09 11:46:58
【问题描述】:

我的日期格式类似于 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

我想念哪里?有什么问题?

【问题讨论】:

    标签: laravel validation laravel-5.6


    【解决方案1】:

    您可以提供自定义格式进行验证,正如您所尝试的那样:

    date_format:format

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

    为您的领域设置完整的规则:

    'start_date' =&gt; 'required|date_format:"d M, Y"'

    请记住,documentation 中已声明:

    日期格式:格式

    验证中的字段必须与给定格式匹配。您应该在验证字段时使用任一日期或日期格式,而不是同时使用。

    【讨论】:

      猜你喜欢
      • 2018-10-21
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      相关资源
      最近更新 更多