laravel 8中的代码事件[]日历不工作



我用laravel 8和PHP 8创建了一个日历,它在PHP 7中运行正常,但由于时间的需要,我不得不升级到PHP 8。我已经成功地将数据保存在数据库中,但mysql中的数据没有出现在日历中,即使我使用了event[],我也检查了mysql中数据可以出来,但数据没有出现,我找不到错误消息,我把我的代码发给你检查,请帮我,thx

K_Jadwal控制器

public function index()
{
$data = K_Jadwal::all();
return view('kkalender.index', compact('data'));
}

index.blade.php

<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Kalender | Inform</title>
<meta name="csrf-token" content="{{ csrf_token() }}" />
<!-- Google Font: Source Sans Pro -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
<!-- Font Awesome -->
<link rel="stylesheet" href="{{ asset('AdminLte/plugins/fontawesome-free/css/all.min.css') }}">
<!-- DataTables -->
<link rel="stylesheet" href="{{ asset('AdminLte/plugins/datatables-bs4/css/dataTables.bootstrap4.min.css') }}">
<link rel="stylesheet"
href="{{ asset('AdminLte/plugins/datatables-responsive/css/responsive.bootstrap4.min.css') }}">
<link rel="stylesheet" href="{{ asset('AdminLte/plugins/datatables-buttons/css/buttons.bootstrap4.min.css') }}">
<!-- Theme style -->
<link rel="stylesheet" href="{{ asset('AdminLte/dist/css/adminlte.min.css') }}">
<link rel="stylesheet" href="{{ asset('plugins/fullcalendar/css/fullcalendar.min.css') }}">
<meta name="csrf-token" content="{{ csrf_token() }}">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/fullcalendar.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/fullcalendar.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css" />
</head>
<body>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h3 class="card-title">Daftar Data Kalender</h3>
</div>
<!-- /.card-header -->
<div class="card-body">
<div id="calendar">

</div>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js"
integrity="sha384-QJHtvGhmr9XOIpI6YVutG+2QOK9T+ZnN4kzFN1RtK3zEFEIsxhlmWl5/YESvpZ13" crossorigin="anonymous">
</script>
<script>
$(document).ready(function() {
var SITEURL = "{{ url('/') }}";
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});

var bg_task = ["bg-teal", "bg-purple", "bg-warning", "bg-muted",
"bg-primary", "bg-success", "bg-brown", "bg-pink", "bg-info"
];
var calendar = $('#calendar').fullCalendar({
header: {
left: 'prev, next today',
center: 'title',
right: 'month, agendaWeek, agendaDay',
},
editable: true,
events: "{{ route('kkalender.index') }}",
displayEventTime: 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) {
$('#dari').val(moment(start).format('YYYY-MM-DD HH:mm:ss'));
$('#sampai').val(moment(end).format('YYYY-MM-DD HH:mm:ss'));
$('#addModal').modal('toggle');
},
eventDrop: function(event, delta) {
var start = $.fullCalendar.formatDate(event.start, "Y-MM-DD");
var end = $.fullCalendar.formatDate(event.end, "Y-MM-DD");
$.ajax({
url: SITEURL + '/fullcalenderAjax',
data: {
title: event.title,
start: start,
end: end,
id: event.id,
type: 'update'
},
type: "POST",
success: function(response) {
displayMessage("Event Updated Successfully");
}
});
},
events: [
@foreach ($data as $value)
{
kategori: '{{ $value->kategori }}',
judul: '{{ $value->judul }}',
dari: '{{ $value->dari }}',
sampai: '{{ $value->sampai }}',
className: bg_task[Math.floor(Math.random() * bg_task.length)],
},
@endforeach
],
eventClick: function(event) {
var deleteMsg = confirm("Do you really want to delete?");
if (deleteMsg) {
$.ajax({
type: "POST",
url: SITEURL + '/fullcalenderAjax',
data: {
id: event.id,
type: 'delete'
},
success: function(response) {
calendar.fullCalendar('removeEvents', event.id);
displayMessage("Event Deleted Successfully");
}
});
}
}
});
});
function displayMessage(message) {
toastr.success(message, 'Event');
}
</script>
</body>

这是我的路线

Route::get('/kkalender', [K_JadwalController::class ,'index']);

你的帮助对我来说意义重大

我已经得到了答案,如果你想在Laravel 中制作日历,我希望它能有所帮助

我的控制器:

public function store(Request $request)
{
$model = new K_Jadwal;
$model->kategori = $request->kategori;
$model->judul = $request->judul;
$model->keterangan = $request->keterangan;
$model->dari = $request->dari;
$model->sampai = $request->sampai;
$model->save();

return redirect('kkalender');
}
public function ajax(Request $request)
{

switch ($request->type) {
case 'delete':
$event = K_Jadwal::find($request->id)->delete();

return response()->json($event);
break;

default:
# code...
break;
}
}

我的index.blade.php:

<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Asset | Inform</title>
<meta name="csrf-token" content="{{ csrf_token() }}">
<link rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
<!-- Font Awesome -->
<link rel="stylesheet" href="{{ asset('AdminLte/plugins/fontawesome-free/css/all.min.css') }}">
<!-- DataTables -->
<link rel="stylesheet" href="{{ asset('AdminLte/plugins/datatables-bs4/css/dataTables.bootstrap4.min.css') }}">
<link rel="stylesheet"
href="{{ asset('AdminLte/plugins/datatables-responsive/css/responsive.bootstrap4.min.css') }}">
<link rel="stylesheet" href="{{ asset('AdminLte/plugins/datatables-buttons/css/buttons.bootstrap4.min.css') }}">
<!-- Theme style -->
<link rel="stylesheet" href="{{ asset('AdminLte/dist/css/adminlte.min.css') }}">
<link href="{{ URL::asset('assets/plugins/fullcalendar/css/fullcalendar.min.css') }}" rel="stylesheet" />
</head>
<body>
<div class="card-body">
<div class="row clearfix">
<div id='calendar'></div>
<div style='clear:both'></div>
<br>
</div>
<!-- /.card-body -->
</div>
</body>
<script src="{{ URL::asset('assets/plugins/moment/moment.js') }}"></script>
<script src="{{ URL::asset('assets/plugins/fullcalendar/js/fullcalendar.min.js') }}"></script>
<!-- <script src="{{ URL::asset('assets/pages/calendar-init.js') }}"></script> -->
<script>
$(document).ready(function() {
// alert("hai");
var SITEURL = "{{ url('/kkalender') }}";
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
/*  className colors
className: default(transparent), important(red), chill(pink), success(green), info(blue)
*/

/* initialize the external events
-----------------------------------------------------------------*/
$('#external-events div.external-event').each(function() {
// create an Event Object (http://arshaw.com/fullcalendar/docs/event_data/Event_Object/)
// it doesn't need to have a start or end
var eventObject = {
title: $.trim($(this).text()) // use the element's text as the event title
};
// store the Event Object in the DOM element so we can get to it later
$(this).data('eventObject', eventObject);
// make the event draggable using jQuery UI
$(this).draggable({
zIndex: 999,
revert: true, // will cause the event to go back to its
revertDuration: 0 //  original position after the drag
});
});

/* initialize the calendar
-----------------------------------------------------------------*/
var bg_task = ["bg-teal", "bg-purple", "bg-warning", "bg-muted",
"bg-primary", "bg-success", "bg-brown", "bg-pink", "bg-info"
];
var calendar = $('#calendar').fullCalendar({
header: {
left: 'title',
center: 'agendaDay,agendaWeek,month',
right: 'prev,next today'
},
editable: true,
firstDay: 0, //  1(Monday) this can be changed to 0(Sunday) for the USA system
selectable: true,
defaultView: 'month',
fixedWeekCount: false,
aspectRatio: 2.2,
axisFormat: 'h:mm',
columnFormat: {
month: 'ddd', // Mon
week: 'ddd d', // Mon 7
day: 'dddd M/d', // Monday 9/7
agendaDay: 'dddd d'
},
titleFormat: {
month: 'MMMM YYYY', // September 2009
week: "MMMM YYYY", // September 2009
day: 'MMMM YYYY' // Tuesday, Sep 8, 2009
},
allDaySlot: true,
selectHelper: true,
select: function(start, end, allDay) {
$('#from_Datetime').val(moment(start).format('YYYY-MM-DD HH:mm:ss'));
$('#to_Datetime').val(moment(end).format('YYYY-MM-DD HH:mm:ss'));
$('#addModal').modal();
var title = $('#title').val();
$("#course_add").click(function() {
if (title) {
calendar.fullCalendar('renderEvent', {
title: title,
batch: batch,
language: language,
level: level,
partner: partner,
start: start,
end: end,
allDay: allDay
},
true // make the event "stick"
);
}
});
calendar.fullCalendar('unselect');
},
droppable: true, // this allows things to be dropped onto the calendar !!!
drop: function(date, allDay) { // this function is called when something is dropped
// retrieve the dropped element's stored Event Object
var originalEventObject = $(this).data('eventObject');
// we need to copy it, so that multiple events don't have a reference to the same object
var copiedEventObject = $.extend({}, originalEventObject);
// assign it the date that was reported
copiedEventObject.start = date;
copiedEventObject.allDay = allDay;
// render the event on the calendar
// the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/)
$('#calendar').fullCalendar('renderEvent', copiedEventObject, true);
// is the "remove after drop" checkbox checked?
if ($('#drop-remove').is(':checked')) {
// if so, remove the element from the "Draggable Events" list
$(this).remove();
}
},
events: [
@foreach ($data as $course)
{
id: '{{ $course->id }}',
title: '{{ $course->kategori }}',
partner: '{{ $course->judul }}',
batch: '{{ $course->keterangan }}',
start: '{{ $course->dari }}',
end: '{{ $course->sampai }}',
className: bg_task[Math.floor(Math.random() * bg_task.length)],
},
@endforeach
],
eventClick: function(event) {
var deleteMsg = confirm("Do you really want to delete?");
if (deleteMsg) {
$.ajax({
type: "POST",
url: SITEURL + '/fullcalenderAjax',
data: {
id: event.id,
type: 'delete'
},
success: function(response) {
calendar.fullCalendar('removeEvents', event.id);
displayMessage("Event Deleted Successfully");
}
});
}
}
});

});
</script>
<div class="modal fade" id="addModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Modal title
</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<form method="POST" action="{{ url('kkalender/') }}" enctype="multipart/form-data">
@csrf
<div>
<div class="form-group">
<label>Kategori</label>
</div>
</div>
<div>
<div class="form-group">
<input type="text" name="kategori" class="form-control" placeholder="Info kategori"
id="kategori" value="{{ old('kategori') }}">
@foreach ($errors->get('kategori') as $msg)
<p class="text-danger">{{ $msg }}
</p>
@endforeach
</div>
</div>
<div>
<div class="form-group">
<label>Judul</label>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<input type="text" name="judul" class="form-control" placeholder="judul"
id="judul" value="{{ old('judul') }}">
@foreach ($errors->get('judul') as $msg)
<p class="text-danger">{{ $msg }}
</p>
@endforeach
</div>
</div>
<div>
<div class="form-group">
<label>Keterangan</label>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<input type="text" name="keterangan" class="form-control" placeholder="keterangan"
id="keterangan" value="{{ old('keterangan') }}">
@foreach ($errors->get('keterangan') as $msg)
<p class="text-danger">{{ $msg }}
</p>
@endforeach
</div>
</div>
<div>
<div class="form-group">
<label>Waktu Dari</label>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<input type="datetime-local" name="dari" class="form-control" placeholder="dari"
id="dari" value="{{ old('dari') }}">
@foreach ($errors->get('dari') as $msg)
<p class="text-danger">{{ $msg }}
</p>
@endforeach
</div>
</div>
<div>
<div class="form-group">
<label>Waktu Sampai</label>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<input type="datetime-local" name="sampai" class="form-control" placeholder="sampai"
id="sampai" value="{{ old('sampai') }}">
@foreach ($errors->get('sampai') as $msg)
<p class="text-danger">{{ $msg }}
</p>
@endforeach
</div>
</div>
<br>
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
&nbsp;&nbsp;&nbsp;
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
</div>
</div>

我的路线:

Route::resource('/kkalender', K_JadwalController::class);
Route::post('/kkalender/fullcalenderAjax', [K_JadwalController::class, 'ajax']);

感谢

最新更新