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.)