Как создать событие с определенной датой в fullcalendar philippfrenzel, используя опцию выбора - PullRequest
0 голосов
/ 22 декабря 2019

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

**Controller:**

        public function actionRequisitar(){
        $searchModel= new RequisicaoSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
        $events = [];
        foreach(Requisicao::find()->all() as $requisicao){
            $event = new \yii2fullcalendar\models\Event();
            $event->id = $requisicao->id;
            $event->title = $requisicao->motivo_requisicao;
            $event->start = $requisicao->data_inicio_req;
            $events[] = $event;
        }
        return $this->render('requisitar',[
            'events'=>$events,
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }

 public function actionCreate()
    {
        $model = new Requisicao();
//$model->data_inicio_req=$date;
        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id, 'utilizador_id' => $model->utilizador_id, 'sala_id' => $model->sala_id]);
        }

        return $this->renderAjax('create', [
            'model' => $model,
        ]);
    }

**Index:**

   <?= \yii2fullcalendar\yii2fullcalendar::widget(array(
                'events' => $events,
                'id' => 'calendar',
            ));
            ?>

**Main.js**

   $(function () {
    $('#modalButton').click(function () {
        $('#modal').modal('show')
            .find('#modalContent')
            .load($(this).attr('value'));
    });

    $(document).on('click', '.fc-day', function () {
        var date = $(this).attr('data-date');
        $.get('index.php?r=requisicao/create', {'date': date}, function (data) {
            $('#modal').modal('show')
                .find('#modalContent')
                .load(data);
        });
    });



});

Спасибо за ваше время.

1 Ответ

0 голосов
/ 24 декабря 2019

Внутри конфигурации Index, где вы настраиваете виджет fullcalendar:

 <?= \yii2fullcalendar\yii2fullcalendar::widget(array(
                'events' => $events,
                'id' => 'calendar',
     ));
 ?>

Вы должны добавить свойство eventClick, которое вызывает функцию JS при нажатии на событие.

Вы можете сделать это следующим образом:

<?= \yii2fullcalendar\yii2fullcalendar::widget(array(
                    'events' => $events,
                    'id' => 'calendar',
                    'eventClick' => new JsExpression('(event) => handleClick(event)'),            
     ));
?>

Обратите внимание, что handleClick должен быть реальной функцией, которая объявлена ​​в вашем javascript, вы можете изменить handleClick(event) для console.log(event), чтобы проверить, еслиэто работает, как вы ожидаете, прежде чем создавать функцию.

...