Codeigniter 4 и полный календарь

#php #fullcalendar #codeigniter-4

#php #полный календарь #codeigniter-4

Вопрос:

Я пытаюсь заставить события данных базы данных загружаться в мой полный календарь, но на самом деле мне это не удается. Пытаюсь уже много часов, но я не знаю, почему он не может его найти. Я использовал var_dump для сбора данных, и он работает из базы данных. У меня в принципе есть проблема с занесением этого в календарь.

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

     public function getEvents($start, $end)
{
    $calendar_model = new AppModelsCalendarModel();

    $event_data = $calendar_model->get_events();

    foreach ($event_data as $row) {
        $data = [
            'ID'          => $row->ID,
            'description' => $row->description,
            'title'       => $row->$title,
            'start'       => $row->start,
            'end'         => $row->end,
        ];
    }

    return json_encode($data);


}
 

функция календаря:

  document.addEventListener('DOMContentLoaded', function() {

    var calendarEl = document.getElementById('calendar');
    var calendar = new FullCalendar.Calendar(calendarEl, {


eventSources: [
     {
        timeZone: 'UTC',

         events: function(start, end, timezone, callback) {
            var start = moment('2021-01-10T00:00:00').unix();
            var end = moment('2021-01-15T00:00:00').unix();
             $.ajax({
             url: '<?php echo base_url() ?>/CalenderController/getEvents',
             dataType: 'json',
             data: {
             // our hypothetical feed requires UNIX timestamps
             start: start,
             end: end
             },
             success: function(msg) {
                 var events = msg.events;
                 callback(events);
             }
             });
         }
     },
 ],

      initialView: 'dayGridMonth'
    });
    // console.log(eventSources);
    calendar.render();
  })
 

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

а вот фотография моего ответа в журнале: img ответа

Предполагается, что он показывает дату начала события с 2021-01-10 по 2021-01-15

Комментарии:

1. Вы используете старую версию функции events . Я предполагаю, что вы нашли пример в Интернете, но не поняли, что он устарел. Пожалуйста, всегда проверяйте документацию — fullcalendar.io/docs/events-function

2. В любом случае ошибка 404 означает, что вы неправильно указали URL-адрес, указывая на вашу функцию контроллера PHP

3. Проверьте, расширяете ли вы контроллер в классе, который имеет функцию контроллера. Попробуйте переименовать функцию и имя контроллера в маленьком регистре в маршруте, используя это calendercontroller/events

4. Я не знаю, в чем проблема, но я верю (может быть, ошибаюсь), что функция возврата не работает при использовании вызовов AJAX, попробуйте вместо этого использовать echo в PHP. Также, как указал @ADyson, я думаю, что указателю URL, указанному для Javascript AJAX, указан неправильный путь из-за ошибки 404

Ответ №1:

Попробуйте изменить метод возврата в Codeigniter 4

 return json_encode($data);
 

От до.

 return $this->response->setJSON($data, true);