У меня проблема с yii2fullcalendar eventDrop. Я сделал JsExpression для eventDrop и eventRender, как показано ниже.
Проблема в том, что когда я перетаскиваю событие в другой день и обновляю страницу, оно теряет свой цвет, а описание становится неопределенным.
С помощью eventRender я добавляю свойства цвета и описания в класс событий.
Я попытался изменить fullcalendar.css и fullcalendar.min.css .fc-event безуспешно
Вот код
<?php
$JsEventRender = 'function(event, element) {
element.addClass(event.description);
element.addClass(event.color);
}'
?>
<?php
$JsEventDrop = 'function(event, delta, revertFunc) {
var event_data = {
id: event.id,
titulo: event.title,
descripcion: event.description,
fecha_inicio: $.fullCalendar.formatDate(event.start, "YYYY-MM-DD"),
hora_inicio: $.fullCalendar.formatDate(event.start, "HH:mm"),
hora_termino: $.fullCalendar.formatDate(event.end, "HH:mm"),
fecha_termino: $.fullCalendar.formatDate(event.end, "YYYY-MM-DD"),
color: event.color,
};
if (!confirm("¿Está seguro que desea modificar la fecha y/o hora?")) {
revertFunc();
}
else {
$.ajax({
type: "POST",
url: "index.php?r=calendario/update" + "&id=" + event_data.id
+ "&titulo=" + event_data.titulo + "&descripcion=" + event_data.description
+ "&fecha_inicio=" + event_data.fecha_inicio + "&hora_inicio=" + event_data.hora_inicio
+ "&hora_termino=" + event_data.hora_termino + "&fecha_termino=" + event_data.fecha_termino
+ "&color=" + event_data.color,
success: function(json) {
alert("Fecha y/o hora modificada correctamente");
}
});
}
}'
?>
<?= yii2fullcalendar\yii2fullcalendar::widget([
'events' => $events,
'id' => 'calendar',
'options' => [
'lang' => 'es',
],
'clientOptions' => [
'selectable' => false,
'editable' => true,
'droppable' => true,
'header' => [
'left' => 'prev,next,today',
'center' => 'title',
'right' => 'month,agendaWeek,agendaDay,listDay',
],
'minTime' => '08:00',
'maxTime' => '21:00',
'height' => 'auto',
'snapDuration' => '00:05:00',
'eventRender' => new JsExpression($JsEventRender),
'eventClick' => new JsExpression($JsEventClick),
'eventDrop' => new JsExpression($JsEventDrop),
'eventResize' => new JsExpression($JsEventResize),
],
]);
?>
<?php
public function actionCreate($fecha_inicio, $fecha_termino)
{
$model = new Calendario();
$model->fecha_inicio = $fecha_inicio;
$model->fecha_termino = $fecha_termino;
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['index']);
}
return $this->renderAjax('create', [
'model' => $model,
]);
}
public function actionUpdate($id, $titulo, $descripcion, $fecha_inicio, $hora_inicio, $hora_termino, $fecha_termino, $color)
{
$model = $this->findModel($id);
$model->id = $id;
$model->titulo = $titulo;
$model->descripcion = $descripcion;
$model->fecha_inicio = $fecha_inicio;
$model->hora_inicio = $hora_inicio;
$model->hora_termino = $hora_termino;
$model->fecha_termino = $fecha_termino;
$model->color = $color;
$model->save();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['index']);
}
return $this->renderAjax('update', [
'model' => $model,
]);
}
Сначала я подумал, что это проблема с URL, но это не так.
Я опубликовал ту же проблему в форуме Yii Framework
https://forum.yiiframework.com/t/fullcalendar-eventdrop-removes-event-color-and-event-description/125790