FullCalendar에서 드래그 앤 드롭으로 날짜 변경
9864 단어 FullCalendarjQueryAdminLTE
【기술 스택】
- Laravel 6.0
- AdminLTE 3 (Composer로 Laravel에 설치)
- jQuery 3.3.1+ (AdminLTE에 기본적으로 포함됨)
- FullCalendar 5.3.2 (AdminLTE에서 기본적으로 들어있는 것은 오래되었으므로 별도의 새로운 버전을 CDN으로 도입)
- moment.js (CDN으로 도입)
전체의 거친 흐름
신경이 쓰이는 부분을 잡아 갑니다.
document.addEventListener("DOMContentLoaded", function () {
var calendarEl = document.getElementById("calendar");
var calendar = new FullCalendar.Calendar(calendarEl, {
headerToolbar: {
left: "prev,next today",
center: "title",
right: "dayGridMonth,timeGridWeek,timeGridDay,listWeek",
},
locale: "ja",
editable: true,
googleCalendarApiKey: "GoogleCalendarのAPIKEY",
eventSources: [
{
googleCalendarId: "[email protected]", //休日の予定を取得
rendering: "background",
color: "#FF6666",
},
{
googleCalendarId: "自分のカレンダーID",
},
],
events: "/getevents",
selectable: true,
eventDrop: function (info) {
$.ajax({
//POST通信
type: "post",
//ここでデータの送信先URLを指定します。
url: "/dropevents",
dataType: "json", //データ形式を指定
data: {
dropped_date: moment(info.event.start).format("YYYY-MM-DD"), //dropped_dateをキーにして値を送信
id: info.event.id, //idをキーにして値を送信
},
}).then((res) => {
console.log(res);
calendar.render();
});
},
});
calendar.render();
});
// コントローラー側
public function getEvents() // イベントの取得
{
// user_idを持たせておく
$data = [];
$authUser = Auth::user()->id;
$events = Event::where("user_id", "=", $authUser)->get();
$data = $events;
echo json_encode($data);
}
public function dropEvents(Request $request) // ドラッグ&ドロップしたときの挙動
{
$event = Event::find($request->id); // JSから送信されたidで該当イベントを検索
$event->start = $request->dropped_date;
$event->save();
}
events: "/getevents"
에서 취득하고 있습니다. eventDrop: function (info)
에서 드래그 앤 드롭했을 때의 거동을 나타냅니다. 이 때 Ajax 통신을하고 있습니다. data: {
dropped_date: moment(info.event.start).format("YYYY-MM-DD"),
id: info.event.id,
}
의 값이 컨트롤러로 전송됩니다.DB의 날짜 형식이
YYYY-MM-DD
이지만 달력에서 보낸 값은 Fri Nov 20 2020 00:00:00 GMT+0900 (日本標準時)
형식이므로 moment.js에서 YYYY-MM-DD
형식으로 형식화됩니다. calendar.render();
에서 캘린더를 다시 그립니다. 예정 「아아아아아아」를, 20일에 움직이면・・・
실시간으로 DB 값이 업데이트되어 페이지를 다시 로드하지 않아도 일정이 20일로 이동하고 있음을 확인할 수 있었습니다.
Reference
이 문제에 관하여(FullCalendar에서 드래그 앤 드롭으로 날짜 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/si-ma/items/b2cd87444e5e24c8d286텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)