Нужна помощь в выяснении, почему Fullcalendar не показывает мои события. - ошибок нет - PullRequest
0 голосов
/ 16 июня 2020

Я использую Laravel 7. Я следовал инструкциям с веб-сайта Fullcalendar и несколько дней искал, пытаясь понять это.

По какой-то причине я не могу извлечь или сохранить данные. Я пробовал делать ad ie -dump, и похоже, что код не запускается. Может быть, кто-то увидит то, что мне не хватает. Я использую cdn для ajax, jquery и fullcalendar.

Вот код для контроллера:

public function index()
{
    if(request()->ajax())
    {

        $start = (!empty($_GET["start"])) ? ($_GET["start"]) : ('');
        $end = (!empty($_GET["end"])) ? ($_GET["end"]) : ('');

        $data = Event::whereDate('start', '>=', $start)->whereDate('end',   '<=', $end)->get(['id','title','start', 'end']);
        return Response::json($data);
    }
    return view('calender');
}


public function create(Request $request)
{
    $insertArr = [ 'title' => $request->title,
        'start' => $request->start,
        'end' => $request->end
    ];
    $event = Event::insert($insertArr);
    return Response::json($event);
}


public function update(Request $request)
{
    $where = array('id' => $request->id);
    $updateArr = ['title' => $request->title,'start' => $request->start, 'end' => $request->end];
    $event  = Event::where($where)->update($updateArr);

    return Response::json($event);
}


public function destroy(Request $request)
{
    $event = Event::where('id',$request->id)->delete();

    return Response::json($event);
}

Вот сценарий из представления:

$(document).ready(function () {

    var SITEURL = "{{url('/')}}";
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });

    var calendar = $('#calendar').fullCalendar({
        editable: true,
        events: SITEURL + "calendar",
        displayEventTime: true,
        editable: true,
        eventRender: function (event, element, view) {
            if (event.allDay === 'true') {
                event.allDay = true;
            } else {
                event.allDay = false;
            }
        },
        selectable: true,
        selectHelper: true,
        select: function (start, end, allDay) {
            var title = prompt('Event Title:');

            if (title) {
                var start = $.fullCalendar.formatDate(start, "Y-MM-DD HH:mm:ss");
                var end = $.fullCalendar.formatDate(end, "Y-MM-DD HH:mm:ss");

                $.ajax({
                    url: SITEURL + "calendar/create",
                    data: 'title=' + title + '&amp;start=' + start + '&amp;end=' + end,
                    type: "POST",
                    success: function (data) {
                        displayMessage("Added Successfully");
                    }
                });
                calendar.fullCalendar('renderEvent',
                    {
                        title: title,
                        start: start,
                        end: end,
                        allDay: allDay
                    },
                    true
                );
            }
            calendar.fullCalendar('unselect');
        },

        eventDrop: function (event, delta) {
            var start = $.fullCalendar.formatDate(event.start, "Y-MM-DD HH:mm:ss");
            var end = $.fullCalendar.formatDate(event.end, "Y-MM-DD HH:mm:ss");
            $.ajax({
                url: SITEURL + 'calendar/update',
                data: 'title=' + event.title + '&amp;start=' + start + '&amp;end=' + end + '&amp;id=' + event.id,
                type: "POST",
                success: function (response) {
                    displayMessage("Updated Successfully");
                }
            });
        },
        eventClick: function (event) {
            var deleteMsg = confirm("Do you really want to delete?");
            if (deleteMsg) {
                $.ajax({
                    type: "POST",
                    url: SITEURL + 'calendar/delete',
                    data: "&amp;id=" + event.id,
                    success: function (response) {
                        if(parseInt(response) > 0) {
                            $('#calendar').fullCalendar('removeEvents', event.id);
                            displayMessage("Deleted Successfully");
                        }
                    }
                });
            }
        }

    });
});

function displayMessage(message) {
    $(".response").html("<div class='success'>"+message+"</div>");
    setInterval(function() { $(".success").fadeOut(); }, 1000);
}

1 Ответ

0 голосов
/ 22 июня 2020

Наконец-то разобрался. Спасибо всем, кто откликнулся! Как только я начал новый проект Laravel, я смог точно определить, что мне не хватало.

Оказывается, было несколько проблем:

Первая заключалась в том, что документы сайт Fullcalendar.io не очень помог. Это дает вам место для начала, но затем вы сами решаете, чего не хватает в коде. Мой код нуждался в том, чтобы это было добавлено в сценарий в представлении:

var calendar = new Calendar(calendarEl, {

events: '/myurlfeed.php'});

Во-вторых, в учебное пособие, которому я следовал, был включен if, в котором говорится, что если это было ajax, выполнить код. Как только я вынул часть if, она напрямую обратилась к коду и смогла загрузить его из базы данных. Ух! Много часов потрачено на то, чтобы понять это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...