我正在使用jQuery库Fullcalendar来显示MYSQL数据库中运动队的赛事。我已经成功地设置了一个JSON提要,它显示了数据库中的所有事件。
然而,一名教练最多可以管理三支球队,每支球队都有自己的页面和日历。目前,所有事件都列在所有日历中。我需要某种过滤器来确保每个日历中只显示属于正确团队的事件。
我根据每个团队的ID给了他们一个唯一的URL,就像这样。
http://localhost/master/index.php/team/56
JSON提要当前输出的是:
{"id":"14","event_id":"8","team":"56","start":"2013-12-16 18:00:00","title":"Mandagsgym","description":"Ivar er trenar","location":"Haukelandshallen","start_time":"18:00:00","end_time":"20:00:00"}
我当前的jQuery:
var filter_id = $('#filter_id').val(); //a variable with the team ID,
fetched from a hidden input field
$('#calendar').fullCalendar({
firstDay:'1',
defaultView: 'basicWeek',
height: 400,
editable: true,
weekends: false,
header:
{
left: '',
center: '',
right: 'prev,next, month,basicWeek'
},
columnFormat: 'ddd d/M',
allDayDefault: false,
events:
{
url: 'http://localhost/master/index.php/team/json'
}
});
在我看来,我有两个选择:1) 找到一种方法,将URL的第三段(团队ID)分配给JSON提要PHP函数,从而为日历提供动态JSON提要。
2) 从URL中获取团队ID,将其分配给Javascript变量,然后使用Fullcalendar方法进行一些筛选,从日历中删除或至少隐藏团队ID与URL中的团队ID不匹配的事件。
这两种提议的方法都远远超出了我相对有限的知识范围。我个人喜欢第2条的方法。如果有人能想出一个解决方案,我会非常高兴,因为我已经被这个问题困扰了好几天了。
我认为选项二最简单,但不一定是最好的。使用自定义事件函数按team_id筛选结果,然后将筛选结果传递到日历,如下所示:
events: function(start,end, callback) {
$.getJSON('http://localhost/master/index.php/team/json', function(data){
var eventsToShow = [];
for(var i=0; i<data.length; i++){
if(data[i].team == filter_id){
eventsToShow.push(data[i]);
}
}
callback(eventsToShow);
});
}
在使用fullcalendar时,我为事件使用了一个自定义函数,但我的json提要也是动态的,因此我可以指定为哪些用户获取事件。这允许一个非常动态的日历。