Symfony-未定义的全日历事件描述

时间:2019-05-22 20:46:35

标签: javascript symfony fullcalendar undefined fullcalendar-4

我有一个控制器,它从数据库中获取数据,并在事件中将其打开以进行全日历处理,当我在其中一个事件中显示模式单击时,它表明描述和电子邮件未定义。

Image of modal undefined fields

但是在XHR中,我可以看到即时消息从控制器接收了所有数据。

Image of XHR GET

模式:

<div id="fullCalModal" class="modal fade" style="z-index: 9999;>
<div class="modal-dialog">
    <div class="modal-content">
        <div class="modal-header">

            <h4 id="modalTitle" class="modal-title"></h4>
        </div>
        <div id="modalBody" class="modal-body">         

        <p id="ev_start" class="modal-body"></p>
        <p id="ev_end" class="modal-body"></p>
        <p id="ev_mail" class="modal-body"></p>
        <p id="ev_desc" class="modal-body"></p>

        </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            <button class="btn btn-primary"><a id="eventUrl" target="_blank">Event Page</a></button>
        </div>
    </div>
</div>


Javascript:

eventClick: function(info) {
    var eventObj = info.event;      


      alert('Clicked ' + eventObj.title + ' with id: ' + eventObj.id + eventObj.description);

        $('#modalTitle').html(eventObj.title);
        $('#ev_titulo').html(eventObj.title);

        $('#ev_start').html('Fecha inicio: ' + eventObj.start);
        $('#ev_end').html('Fecha fin: ' + eventObj.end);
        $('#ev_desc').html('Descripcion: ' + eventObj.description);
        $('#ev_mail').html('Mail: ' + eventObj.mail);


        $('#fullCalModal').modal('show');

  },

控制器:

public function loadAction()
{

    $em = $this->getDoctrine()->getManager();
    $eventos = $em->getRepository('App:Evento')->findAll();

    $data = array();

    foreach ($eventos as $evento)
    {       
        $events['id'] = $evento->getId();
        $events['title'] = $evento->getTitle();
        $events['start'] = $evento->getBeginAt()->format('Y-m-d');;
        $events['end'] = $evento->getEndAt()->format('Y-m-d');;
        $events['color'] = $evento->getColor();
        $events['description'] = $evento->getDescription();
        $events['mail'] = $evento->getMail();
        array_push($data, $events);
    }

        return $this->json($data);

}

1 个答案:

答案 0 :(得分:0)

event parsing documentation指出

  

其他所有非标准道具都将转移到   事件对象中的extendedProps哈希。

由于descriptionmail不是fullCalendar中的标准事件属性(如该文档中列出),因此它们将被放置在fullCalendar创建的最终事件对象中的“ extendedProps”对象下从服务器收到的数据上。

因此,在您的eventClick代码中,您应该可以编写

$('#ev_desc').html('Descripcion: ' + eventObj.extendedProps.description);
$('#ev_mail').html('Mail: ' + eventObj.extendedProps.mail);

并将属性成功填充到您的模式中。

P.S。 event object documentation中也提到了此行为。如果您以前使用过fullCalendar版本3或更低版本,则与这些早期版本的工作方式有所不同。