Symfony - 全日历事件描述未定义
Symfony - Fullcalendar event description undefined
我有一个控制器,它从数据库中获取数据并将其转换为完整日历的事件,当我在其中一个事件中显示模态点击时,它显示描述和电子邮件未定义。
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);
}
event parsing documentation 表示
Every other non-standard prop will be transferred over to the
extendedProps hash in the Event Object.
由于 description
和 mail
不是 fullCalendar 中的标准事件属性(如该文档中所列),因此它们将被放置在最终事件对象中的 "extendedProps" 对象下fullCalendar 根据从您的服务器接收到的数据创建。
因此在您的 eventClick
代码中您应该能够编写
$('#ev_desc').html('Descripcion: ' + eventObj.extendedProps.description);
$('#ev_mail').html('Mail: ' + eventObj.extendedProps.mail);
并将属性成功填充到您的模式中。
P.S。 event object documentation 中也提到了这种行为。如果您以前使用过 fullCalendar 版本 3 或更低版本,那么这与这些早期版本的工作方式有所不同。
我有一个控制器,它从数据库中获取数据并将其转换为完整日历的事件,当我在其中一个事件中显示模态点击时,它显示描述和电子邮件未定义。
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);
}
event parsing documentation 表示
Every other non-standard prop will be transferred over to the extendedProps hash in the Event Object.
由于 description
和 mail
不是 fullCalendar 中的标准事件属性(如该文档中所列),因此它们将被放置在最终事件对象中的 "extendedProps" 对象下fullCalendar 根据从您的服务器接收到的数据创建。
因此在您的 eventClick
代码中您应该能够编写
$('#ev_desc').html('Descripcion: ' + eventObj.extendedProps.description);
$('#ev_mail').html('Mail: ' + eventObj.extendedProps.mail);
并将属性成功填充到您的模式中。
P.S。 event object documentation 中也提到了这种行为。如果您以前使用过 fullCalendar 版本 3 或更低版本,那么这与这些早期版本的工作方式有所不同。