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



我不知道我的symfony项目上的更新或删除全calendar事件。

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

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

$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-dTH:i:s');
        var end1 = events.end.format('Y-m-dTH: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("...");
            },
        });
    },
});

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

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

您应该使用

$em->merge($event);

用于更新已经存在的实体和

$em->remove($event);

用于删除实体。

也许您应该尝试创建不同的控制器操作(EventDeleteAction,EventStreateAction)来制作CRUD操作。

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

相关内容

  • 没有找到相关文章

最新更新