php使用fullcalendar日歷插件詳解
最近做課程表的項(xiàng)目,找了好多個(gè)插件感覺(jué)都不好用,無(wú)意間看到了fullcalendar,還挺簡(jiǎn)單的,很方便,先貼一張項(xiàng)目頁(yè)面

<!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語(yǔ)言包 -->
<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>
//獲取當(dāng)前日期
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, //默認(rèn)顯示日期
navLinks: true, // can click day/week names to navigate views
defaultView:'agendaWeek', //初始化時(shí)的默認(rèn)視圖默認(rèn)顯示周
allDaySlot: false, //是否顯示all-day
slotLabelFormat:'H:mm', //左側(cè)時(shí)間顯示格式
minTime : '06:00:00', //左側(cè)時(shí)間從幾點(diǎn)開(kāi)始
maxTime : '22:00:00', //左側(cè)時(shí)間從幾點(diǎn)結(jié)束
locale: 'zh-cn', //顯示中文
selectable: true, //設(shè)置是否可被單擊或者拖動(dòng)選擇
eventLimit: true, //如果數(shù)據(jù)過(guò)多超過(guò)日歷格子顯示的高度時(shí),多出去的數(shù)據(jù)不會(huì)將格子擠開(kāi),而是顯示為 +...more ,點(diǎn)擊后才會(huì)完整顯示所有的數(shù)據(jù)
// 點(diǎn)擊課程信息事件,并彈窗
eventClick: function(calEvent, jsEvent, view) {
console.log('cycle_id:' + calEvent.id); //點(diǎn)擊的課程周期id
console.log('sel_type:' + calEvent.sel_type); //點(diǎn)擊的課程周期類(lèi)型 1單次 2重復(fù)
// 彈出一個(gè)頁(yè)面
layer.open({
type: 2,
title: '課程表信息',
shadeClose: true,
shade: [0.5, '#000'],
maxmin: true, //開(kāi)啟最大化最小化按鈕
area: ['900px', '650px'],
content: "/school/Course_Table/cycleInfo.html?cycle_id="+calEvent.id,
end: function () {
// 刷新父窗口
location.reload();
}
});
},
// 點(diǎn)擊空白區(qū)域,獲取選擇的日期時(shí)間范圍,并彈窗
select: function(startDate, endDate) {
selDate = startDate.format('YYYY-MM-DD'); //選中的開(kāi)始日期
layer.open({
type: 2,
title: '周期排課',
shadeClose: true,
shade: [0.5, '#000'],
maxmin: true, //開(kāi)啟最大化最小化按鈕
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日'
},
},
// 鼠標(biāo)移上的提示 使用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)絡(luò)錯(cuò)誤');
}
},
error:function () {
layer.msg('網(wǎng)絡(luò)錯(cuò)誤');
}
});
}
});
});
</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后臺(tái)代碼:這里我把要顯示的格式在后臺(tái)封裝好了,到前臺(tái)直接取出來(lái)拿來(lái)用就可以了。
注意:title和start即標(biāo)題和開(kāi)始時(shí)間是必須要有的,其他的參數(shù)可選,其中 start 格式是“日期T時(shí)間”,中間有個(gè)字母“T”,看自己情況,description 的內(nèi)容是鼠標(biāo)放上去要顯示的內(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']; ///課程周期類(lèi)型 1單次 2重復(fù)
$val['title'] = '教師:'.$value['teacher_name']. '班級(jí):'.$value['grade_name'];
$val['start'] = $value['date'].'T'.$value['start_time'];
$val['end'] = $value['date'].'T'.$value['end_time'];
$val['description'] = '教師:'.$value['teacher_name'].'班級(jí):'.$value['grade_name'].'教室:'.$value['room_name'];
$val['color'] = '#009688';
$val['textColor'] = '#fff';
$newList[] = $val;
}
return return_succ($newList);
}
return $this->fetch();
}

代碼里有注釋?zhuān)胁欢目梢粤粞詼贤ā?/p>
官方網(wǎng)站里面有文檔,可以慢慢研究 https://fullcalendar.io/docs
以上所述是小編給大家介紹的php使用fullcalendar日歷插件的教程詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
如何通過(guò)Linux命令行使用和運(yùn)行PHP腳本
這篇文章主要介紹了如何通過(guò)Linux命令行使用和運(yùn)行PHP腳本,PHP語(yǔ)言和C/Java以及嗲有一些PHP特性的Perl變成語(yǔ)言中的語(yǔ)法非常相似,當(dāng)前比較穩(wěn)定且最新的版本是5.6.10。PHP是一種HTML的嵌入腳本,很方便開(kāi)發(fā)人員寫(xiě)出動(dòng)態(tài)生成的頁(yè)面,需要的朋友可以參考下2015-07-07
Laravel 5.5中為響應(yīng)請(qǐng)求提供的可響應(yīng)接口詳解
這篇文章主要給大家介紹了關(guān)于Laravel 5.5中為響應(yīng)請(qǐng)求提供的可響應(yīng)接口的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11
php+ajax+h5實(shí)現(xiàn)圖片上傳功能
這篇文章主要為大家詳細(xì)介紹了php+ajax+h5實(shí)現(xiàn)ajax圖片上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
詳解laravel安裝使用Passport(Api認(rèn)證)
這篇文章主要介紹了詳解laravel安裝使用Passport(Api認(rèn)證),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
php 替換文章中的圖片路徑,下載圖片到本地服務(wù)器的方法
下面小編就為大家分享一篇php 替換文章中的圖片路徑,下載圖片到本地服務(wù)器的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
Yii2框架操作數(shù)據(jù)庫(kù)的方法分析【以mysql為例】
這篇文章主要介紹了Yii2框架操作數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式分析了Yii2框架配置、連接mysql數(shù)據(jù)庫(kù)及執(zhí)行SQL進(jìn)行增刪改查等相關(guān)操作技巧,需要的朋友可以參考下2019-05-05
PHP學(xué)習(xí)記錄之?dāng)?shù)組函數(shù)
這篇文章主要介紹了PHP學(xué)習(xí)記錄之?dāng)?shù)組函數(shù),php中的數(shù)組是一個(gè)有序映射,數(shù)組可以接受任意數(shù)量用逗號(hào)分隔符的鍵值對(duì)。下面結(jié)合代碼實(shí)例給大家接受,感興趣的朋友一起看看吧2018-06-06

