Поле даты не обязательно, но без него форма не отправится

Я создаю форму публикации с необязательным полем даты, и я сделал мутатор, чтобы сделать дату NULL в базе данных, когда она не введена в форму.

Форма в create.blade.php

<div class="form-group {{ $errors->has('published_at') ? 'has-error' : '' }}">
    {!! Form::label('published_at', 'Publish date') !!}
    {!! Form::text('published_at', null, ['class' => 'form-control', 'placeholder' => 'Y-m-d H:i:s']) !!}
    @if($errors->has('published_at'))
        <span class="help-block">{{ $errors->first('published_at') }}</span>
    @endif
</div>

Мутатор в Post.php:

public function setPublishedAtAttribute($value)

{
    $this->attributes['published_at'] = $value ?: NULL;
}

Функция сохранения в контроллере:

$this->validate($request, [

    'title' => 'required',
    'slug' => 'required|unique:posts',
    'body' => 'required',
    'published_at' => 'date_format:Y-m-d H:i:s',
    'category_id' => 'required'

]);

Я ожидаю, что дата будет NULL в базе данных, если она не введена в форму, но я получаю ошибку проверки в форме «Опубликованное в не соответствует формату Y-m-d H: i: s». и он не будет отправлен


person Mohamed Hamidi    schedule 16.07.2019    source источник


Ответы (2)


Вы можете сделать следующее

      'published_at' => 'nullable|date_format:Y-m-d H:i:s',

и в вашем файле миграции вы можете установить атрибут как обнуляемый

$table->timestamp('published_at')->nullable();

Так что, если нет значения, будет обнулено

person mohamed hassan    schedule 16.07.2019
comment
Снимаю шляпу, брат, прямое и быстрое решение, спасибо! - person Mohamed Hamidi; 16.07.2019

Просто сделайте проверку published_at=>'sometimes|date_format:Y-m-d H:i:s'

person Mohammed Aktaa    schedule 16.07.2019