FullCalendar 从数据库中获取事件

FullCalendar get events from database

您好,我在 laravel 项目中使用 FullCalendar,我需要显示数据库中的事件。

我从数据库中获取所有事件并使用 json_encode 显示它们。

这是我使用的代码:

我的控制器:


<?php

namespace App\Http\Controllers;
use App\Http\Gestionnaires\EventGestionnaire;
use Illuminate\Http\Request;

class EventController extends Controller
{
    public function afficher(){

        $eventGestionnaire = new EventGestionnaire;
        $listeEvents = $eventGestionnaire->getListeEvents();

        echo json_encode($listeEvents);


        return view('pages.calendar');

    }
}

还有我的脚本:


$calendar.fullCalendar({

    viewRender: function(view, element) {
        if (view.name != 'month'){

            $(element).find('.fc-scroller').perfectScrollbar();

        }
    },

    resourceEditable: true,
    eventLimit: true,
    editable: true,
    selectable: true,
    selectHelper: true,
    header: {
        left: 'month,agendaWeek,agendaDay',
        center: 'title',
        right: 'prev,next,today'
    },

    events: 'EventController.php',

错误:

jquery.min.js:3049 GET http://localhost/planner/public/EventController.php?start=2019-09-01&end=2019-10-13&_=1568831263931 404(未找到)

从 FullCallendar V3 DOCS 传递 URL 和 JSON 响应使用

$('#calendar').fullCalendar({

  eventSources: [

    // your event source
    {
      url: '/myfeed.php', // use the `url` property
      color: 'yellow',    // an option!
      textColor: 'black'  // an option!
    }

    // any other sources...

  ]

});

我过去使用过它,javascript 侧使用与之前答案相同的结构。一旦创建了访问它的路线,请参阅 php 代码以响应您的 ajax 请求:

    $results = [];

    foreach($calendar_events as $calendar_event)
    {
        $ev = [];
        $ev["title"] = $calendar_event->name;
        $ev["color"] = $calendar_event->calendar->color ?? "f47d30";

        $ev["start"] = Carbon::parse($calendar_event->start)->format("Y-m-d");
        $ev["end"]   = Carbon::parse($calendar_event->end)->format("Y-m-d");

        if (!$calendar_event->is_allday)
        {
            $ev["start"]  = Carbon::parse($calendar_event->start."T".$calendar_event->start_time)->format("Y-m-d\TH:i:s");
            $ev["end"]    = Carbon::parse($calendar_event->end."T".$calendar_event->end_time)->format("Y-m-d\TH:i:s");
            $ev["allDay"] = false;
        }

        if (!empty($calendar_event->url))
        {
            $ev["url"] = $calendar_event->url;
        }

        $results[] = $ev;
    }

    return response($results);