Fullcalendar 3 изменить перетаскиваемые события при смене недели - PullRequest
1 голос
/ 03 ноября 2019

Я работаю с fullcalendar 3 с laravel.

Перетаскиваемые события - это курсы, которые должны меняться каждую неделю. Я хочу динамически менять курсы при смене недели в календаре.

В данный момент в контроллере есть функция, которая дает мне каждый курс:

public function index()
    {
        $corsi = Corso::select('titolo', 'descrizione','ore_45esimi')->get();
        return view('lezione.calendario_lezioni')->with(array('corsi' => $corsi));
    }

, затем вview Я отображаю события, используя div:

<div id="external-events">
  @foreach($corsi as $corso)
    <div class="external-event bg-formazione">{{$corso->titolo }}
      <br>
      <div style="font-size: small">{{$corso->descrizione }} </div>
      <input id="ore" type="hidden" value="{{$corso->ore_45esimi }}">
    </div>
   @endforeach
 </div>

И в js-файле Fullcalendar у меня есть функция, позволяющая сделать курсы перетаскиваемыми:

    function ini_events(ele) {
            ele.each(function () {
                let eventObject = {
                    title: $(this).contents()
                        .filter(function () {
                            return !!$.trim(this.innerHTML || this.data);
                        })
                        .first().text(),

                    descrizione: $.trim($(this).contents()[3].firstChild.textContent),
                    ore: $(this).contents('#ore').val(),
                    color: $(this).css("background-color"), 
                };
                $(this).data('event', eventObject);

                $(this).draggable({
                    zIndex: 1070,
                    revert: true, 
                    revertDuration: 0  
                });

            });
        }

ini_events($('#external-events div.external-event'));

Я нашел функцию viewRender, которая позволяетчтобы получить начало и конец отображаемой недели:

$('#calendar').fullCalendar({
...

viewRender: function (element) {
            var start = moment(element.intervalStart).format();
            var end = moment(element.intervalEnd).subtract(1, 'd').format();

        },
});

Как использовать переменную начала и конца в методе index в запросе контроллера, когда я впервые показываю календарь и каждый раз меняюсьнеделю?

1 Ответ

0 голосов
/ 03 ноября 2019

Вы хотите передать две переменные javascripts в php. По этому вопросу имеется огромное количество литературы, например, Laravel blade pass переменная Javascript в php Существует много возможных решений. Я предпочитаю передавать значения переменных через URL в новый метод, а после сеанса - в метод индекса. 1) маршруты / web.php

Route::get('yourproject/{start}/{end}/getstartandend','yourController@getstartandend');

2) просмотр

$('#calendar').fullCalendar({
...

viewRender: function (element) {
        var start = moment(element.intervalStart).format();
        var end = moment(element.intervalEnd).subtract(1, 'd').format();

    },
});
...
appBase="{!!URL::to('/')!!}";
var route = appBase + "/yourproject/"+start+"/"+end+"/getstartandend"; 
$.get(route);

3) yourController

 public function index ()
 {
    $corsi = Corso::select('titolo', 'descrizione','ore_45esimi')->get();
    return view('lezione.calendario_lezioni')->with(array('corsi' => $corsi));
$start = session('start');
$end = session('end');
....
  }

 public function getstartandend ($start, $end)
{
 session(['start' => $start]);
 session(['end' => $end]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...