php使用fullcalendar日歷插件詳解
最近做課程表的項目,找了好多個插件感覺都不好用,無意間看到了fullcalendar,還挺簡單的,很方便,先貼一張項目頁面

<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<!-- 日歷插件 -->
<link href='/public/school/table/fullcalendar.min.css' rel='stylesheet' />
<link href='/public/school/table/fullcalendar.print.min.css' rel='stylesheet' media='print' />
<script src='/public/school/table/moment.min.js'></script>
<script src='/public/school/table/jquery.min.js'></script>
<script src='/public/school/table/fullcalendar.min.js'></script>
<!-- fullcalendar語言包 -->
<script src='/public/school/table/locale-all.js'></script>
<!-- layui -->
<link rel="stylesheet" href="/public/school/layui/css/layui.css" rel="external nofollow" media="all">
<link rel="stylesheet" href="/public/school/style/admin.css" rel="external nofollow" media="all">
<script src="/public/school/layui/layui.js"></script>
<!-- bootstrap -->
<link rel='stylesheet' />
<script src='https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js'></script>
<script src='https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js'></script>
</head>
<script>
//獲取當前日期
var myDate = new Date();
var defaultDate = myDate.getFullYear() +'-'+(myDate.getMonth()+1)+'-'+myDate.getDate()
$(document).ready(function() {
$('#calendar').fullCalendar({
header: { //頂部顯示信息
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay,listMonth'
},
defaultDate: defaultDate, //默認顯示日期
navLinks: true, // can click day/week names to navigate views
defaultView:'agendaWeek', //初始化時的默認視圖默認顯示周
allDaySlot: false, //是否顯示all-day
slotLabelFormat:'H:mm', //左側時間顯示格式
minTime : '06:00:00', //左側時間從幾點開始
maxTime : '22:00:00', //左側時間從幾點結束
locale: 'zh-cn', //顯示中文
selectable: true, //設置是否可被單擊或者拖動選擇
eventLimit: true, //如果數(shù)據(jù)過多超過日歷格子顯示的高度時,多出去的數(shù)據(jù)不會將格子擠開,而是顯示為 +...more ,點擊后才會完整顯示所有的數(shù)據(jù)
// 點擊課程信息事件,并彈窗
eventClick: function(calEvent, jsEvent, view) {
console.log('cycle_id:' + calEvent.id); //點擊的課程周期id
console.log('sel_type:' + calEvent.sel_type); //點擊的課程周期類型 1單次 2重復
// 彈出一個頁面
layer.open({
type: 2,
title: '課程表信息',
shadeClose: true,
shade: [0.5, '#000'],
maxmin: true, //開啟最大化最小化按鈕
area: ['900px', '650px'],
content: "/school/Course_Table/cycleInfo.html?cycle_id="+calEvent.id,
end: function () {
// 刷新父窗口
location.reload();
}
});
},
// 點擊空白區(qū)域,獲取選擇的日期時間范圍,并彈窗
select: function(startDate, endDate) {
selDate = startDate.format('YYYY-MM-DD'); //選中的開始日期
layer.open({
type: 2,
title: '周期排課',
shadeClose: true,
shade: [0.5, '#000'],
maxmin: true, //開啟最大化最小化按鈕
area: ['900px', '650px'],
content: "/school/Course_Table/addCycle2.html?selDate="+selDate,
end: function () {
// 刷新父窗口
location.reload();
}
});
},
// 日期顯示格式
views: {
month: {
titleFormat: 'YYYY年MM月'
},
agenda: {
titleFormat: 'YYYY年MM月DD日'
},
week: {
titleFormat: 'YYYY年MM月DD日'
},
},
// 鼠標移上的提示 使用bootstorp的提示
eventRender: function(eventObj, $el) {
$el.popover({
content: eventObj.description,
trigger: 'hover',
placement: 'top',
container: 'body'
});
},
// 獲取要顯示的數(shù)據(jù) 返回的是json格式
events: function(start,end,timezone, callback) {
$.ajax({
url: "{:url('courseTable')}",
dataType: 'json',
type:"POST",
success: function(data) {
if (data.status == 0) {
callback(data.msg);
}else{
layer.msg('網(wǎng)絡錯誤');
}
},
error:function () {
layer.msg('網(wǎng)絡錯誤');
}
});
}
});
});
</script>
<style>
body {
/*margin: 40px 10px;*/
padding: 0;
font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
font-size: 14px;
}
#calendar {
max-width: 1200px;
margin: 0 auto;
}
</style>
</head>
<body>
<div class="layui-fluid" style="margin: 10px">
<div class="layui-card">
<div class="layui-card-body">
<div id='calendar'></div>
</div>
</div>
</div>
<script type="text/javascript">
//加載layui
layui.use(['layer','element','form'], function(){
var layer = layui.layer
,element = layui.element
,form = layui.form;
});
</script>
</body>
</html>
php后臺代碼:這里我把要顯示的格式在后臺封裝好了,到前臺直接取出來拿來用就可以了。
注意:title和start即標題和開始時間是必須要有的,其他的參數(shù)可選,其中 start 格式是“日期T時間”,中間有個字母“T”,看自己情況,description 的內(nèi)容是鼠標放上去要顯示的內(nèi)容
public function courseTable()
{
if (request()->isPost()) {
//二維數(shù)組
$list = model('CourseTable')->getCourseTable($this->sid);
foreach ($list as $key => $value) {
$val['id'] = $value['id']; ///課程周期表
$val['sel_type'] = $value['sel_type']; ///課程周期類型 1單次 2重復
$val['title'] = '教師:'.$value['teacher_name']. '班級:'.$value['grade_name'];
$val['start'] = $value['date'].'T'.$value['start_time'];
$val['end'] = $value['date'].'T'.$value['end_time'];
$val['description'] = '教師:'.$value['teacher_name'].'班級:'.$value['grade_name'].'教室:'.$value['room_name'];
$val['color'] = '#009688';
$val['textColor'] = '#fff';
$newList[] = $val;
}
return return_succ($newList);
}
return $this->fetch();
}

代碼里有注釋,有不懂的可以留言溝通。
官方網(wǎng)站里面有文檔,可以慢慢研究 https://fullcalendar.io/docs
以上所述是小編給大家介紹的php使用fullcalendar日歷插件的教程詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
PHP去掉從word直接粘貼過來的沒有用格式的函數(shù)
通常我們會遇到直接把word內(nèi)的內(nèi)容,直接粘貼到文本編輯器中。這時候會出現(xiàn)在文本編輯器中有一些word內(nèi)的沒用的標簽內(nèi)容2012-10-10
ThinkPHP5.1框架數(shù)據(jù)庫鏈接和增刪改查操作示例
這篇文章主要介紹了ThinkPHP5.1框架數(shù)據(jù)庫鏈接和增刪改查操作,結合實例形式分析了thinkPHP5.1框架數(shù)據(jù)庫連接的常用方式與針對數(shù)據(jù)庫增刪改查操作相關實現(xiàn)技巧,需要的朋友可以參考下2019-08-08
phpexcel導入excel處理大數(shù)據(jù)(實例講解)
下面小編就為大家?guī)硪黄猵hpexcel導入excel處理大數(shù)據(jù)(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08
php+mysql不用遞歸實現(xiàn)的無限級分類實例(非遞歸)
這篇文章主要介紹了php+mysql不用遞歸實現(xiàn)的無限級分類實例,重點在不使用遞歸,需要的朋友可以參考下2014-07-07
php基于CodeIgniter實現(xiàn)圖片上傳、剪切功能
這篇文章主要為大家詳細介紹了php基于CodeIgniter實現(xiàn)圖片上傳、剪切功能,具有參考價值,感興趣的朋友可以參考一下2016-05-05
使用PHP?Smarty處理表單數(shù)據(jù)的方法
這篇文章主要介紹了如何使用PHP?Smarty處理表單數(shù)據(jù),首先需要下載Smarty庫并將其解壓到你的項目,下面通過本文結合實例代碼給大家講解的非常詳細,需要的朋友可以參考下2023-08-08

