Обновление даты начала события из FullCalendar в моей базе данных приводит к 00:00:00 - PullRequest
0 голосов
/ 09 мая 2020

Я использую FullCalendar и пытаюсь обновить время начала события, когда пользователь перетаскивает событие в моем календаре. Это код, который я использую для обратного вызова eventDrop (https://fullcalendar.io/docs/eventDrop):

        alert(info.event.id + ' was dropped on ' + info.event.start);
        $.ajax({
          url: '/Post/dropPost',
          type: 'POST',
          data: { 'postSchedule': info.event.start, 'postId' : info.event.id },
        });
       },

Это работает в той мере, в какой предупреждение показывает правильный идентификатор события и правильное начало дата (в следующем формате: Вт 05 мая 2020 04:36:00). Также вызывается метод '/ Post / dropPost', и переменная postId передается нормально.

Однако, когда он обновляет мою базу данных, postSchedule всегда обновляется как «00:00:00 00:00:00».

Это мой метод dropPost:

    public function dropPost() 
    {
        $data=[];
        $postSchedule = $_POST['postSchedule'];
        $postId = $_POST['postId'];
        $droppedPost = new PostModel;
        $data['id'] = $postId;
        $data['postSchedule'] = $postSchedule;
        $droppedPost->save($data);
    }

Читая документы FullCalendar, я понял, что даты всегда должны соответствовать стандарту ISO8601: https://fullcalendar.io/docs/date-parsing. Так почему это не переводится в мою базу данных.

Столбец postSchedule в моей базе данных имеет тип DateTime.

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Я наконец нашел ответ. Мне нужно было использовать .toISOString () в свойстве info.event.start.

Рабочий код выглядит следующим образом:

 eventDrop: function(info) {
    alert(info.event.id + ' was dropped on ' + info.event.start);
    $.ajax({
      url: '/Post/dropPost',
      type: 'POST',
      data: { 'postSchedule': info.event.start.toISOString(), 'postId' : info.event.id },
    });
   },
0 голосов
/ 09 мая 2020

Проблема, я думаю, в том, что вы не конвертируете postSchedule в правильный формат для сохранения в database.

Контроллер

Сначала проверьте, что данные извлекаются print_r($this->input->post()).
Если да, то конвертируйте данные в правильную форму ie $data['postSchedule'] = date("Y-m-d H:i:s", strtotime($postSchedule));, а затем сохраните данные в database с типом DATETIME.
Надеюсь, это вам поможет.

...