如何使用Symfony更新或删除fullCalendar事件

时间:2017-09-05 09:58:01

标签: javascript symfony fullcalendar

我不知道如何在我的symfony项目上更新或删除fullcalendar事件。

要添加新事件,我打开一个带有表单的模态窗口,以提交新事件并将其插入我的数据库。

这是我的控制器(工作正常):

$datas = array();
    $form = $this->createFormBuilder($datas)
        ->add('title',  TextType::class)
        ->add('startDate', TextType::class, array(
            'attr'=> array('class' => 'dateTimePicker')))
        ->add('endDate', TextType::class, array(
            'attr'=> array('class' => 'dateTimePicker')))
        ->add('backgroundColor', ChoiceType::class, array('choices' => $color ))

        ->getForm();

    $form->handleRequest($request);

    /** Création d'un nouvel évenement */
    if ($form->isSubmitted() && $form->isValid()) {

        $title = $form->get('title')->getData();
        $start = new \DateTime($form->get('startDate')->getData());
        $end = new \DateTime($form->get('endDate')->getData());
        $backgroundColor = $form->get('backgroundColor')->getData();

        $event = new CalendarEvent();
        $event->setTitle($title);
        $event->setStartDate($start);
        $event->setEndDate($end);
        $event->setBackgroundColor($backgroundColor);

        $em = $this->getDoctrine()->getManager();
        $em->persist($event);
        $em->flush();

        return $this->redirect($this->generateUrl('ma_lrm_accueil'));
    }

我知道要更新活动,我必须有这样的javascript:

$(document).ready(function() {
$('#calendar').fullCalendar({
    header: {
        left: 'prev, next',
        center: 'title',
        right: 'month, agendaWeek, agendaDay'
    },
    timezone: ('Europe/London'),
    businessHours: {
        start: '09:00',
        end: '18:30',
        dow: [1, 2, 3, 4, 5]
    },
    allDaySlot: true,
    defaultView: 'agendaWeek',
    lazyFetching: true,
    firstDay: 1,
    selectable: true,
    /*timeFormat: {
        agenda: 'h:mmt',
        '': 'h:mmt'
    },*/
    editable: true,
    eventDurationEditable: true,
    events: 'http://localhost/ligne_rh/web/app_dev.php/admin/accueil/calendar',

    eventResize: function(events) {
        console.log("Entrée dans : eventResize");
        var start1 = events.start.format('Y-m-d\TH:i:s');
        var end1 = events.end.format('Y-m-d\TH:i:s');
        var xhr = $.ajax({
            type: "POST",
            url: 'http://localhost/.../calendar/event/update',
            data: 'title=' + events.title + '&start=' + start1 + '&end=' + end1 + '&id=' + events.id,
            dataType: 'html',
            success: function(data) {
                window.location.reload(true);
            },
            error: function() {
                alert("...");
            },
        });
    },

});

我不明白任何一个,我不知道我的控制器应该是什么样的。

请帮我举个例子!!我是新手!!谢谢!!!!

2 个答案:

答案 0 :(得分:0)

你应该使用

$em->merge($event);

用于更新现有实体和

$em->remove($event);

删除实体。

也许你应该尝试创建不同的控制器动作(eventDeleteAction,eventCreateAction)来进行CRUD操作。

答案 1 :(得分:0)

您好,您可以使用https://github.com/tattali/CalendarBundle文档说明如何将日历链接到CRUD,以允许创建,更新和删除事件