Laravel5.2中FullCalendar4无法加载MySQL数据库事件问题排查
解决FullCalendar 4无法显示Laravel 5.2数据库事件的问题
看起来你的代码已经接近成功了,问题出在事件数据的格式和接口请求路径这两个关键点上,咱们一步步来修复:
1. 修复后端事件数据的返回格式
你的getEvents方法目前有两个核心问题:
- 循环中每次都覆盖同一个
$events数组,导致最终只返回最后一条事件 - FullCalendar要求接收事件对象的数组,但你返回的是单个事件对象
修改后的EventsController@getEvents方法:
public function getEvents() { $getEvents = Events::select('coach_id', 'start_date', 'end_date')->get(); $events = []; foreach ($getEvents as $values) { // 注意:如果你的数据库datetime是24小时制,必须用H:i:s(h是12小时制,会导致解析失败) $start_date_format = \DateTime::createFromFormat('Y-m-d H:i:s', $values->start_date); $end_date_format = \DateTime::createFromFormat('Y-m-d H:i:s', $values->end_date); // 逐个创建事件对象,添加到数组中 $events[] = [ 'title' => $values->coach_id, 'start' => $start_date_format->format('c'), 'end' => $end_date_format->format('c') ]; } // 明确返回JSON格式的事件数组 return response()->json($events); }
2. 修复前端事件接口的请求路径
在你的Calendar.js中,events: 'getEvents'会使用当前页面的相对路径来请求接口。比如当你在/events页面时,它会请求/events/getEvents,而不是你配置的根路径/getEvents。
修改为根相对路径:
events: '/getEvents', // 加上斜杠,确保请求正确的接口地址
3. 验证修复效果
完成修改后,先访问/getEvents,你应该看到类似这样的JSON数组(多条事件的集合):
[ {"title":4,"start":"2019-10-23T11:00:00+00:00","end":"2019-10-23T12:00:00+00:00"}, {"title":6,"start":"2019-10-25T09:00:00+00:00","end":"2019-10-25T10:00:00+00:00"} ]
然后刷新日历页面,打开浏览器的开发者工具(F12),在网络标签下查看是否成功请求了/getEvents,并且返回的数据格式正确。如果还有问题,可以检查控制台是否有JS报错(比如日期解析错误)。
内容的提问来源于stack exchange,提问作者Malkom
相关产品推荐
相关产品推荐

