#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);