我正在使用带有Symfony 3.4的fullcalendar.js(因为从版本3开始,所有捆绑包都被弃用)。当我在js中硬编码他们正在展示的事件时,日历本身就会显示出来。但是当我用JSON发送我的活动时,他们没有显示自己,日历是空白的。但是,json源的格式正确,并且确实被我的页面捕获(http 200响应)。这是我的控制器获取数据并发送JSON:
/**
* @Route("/calendrierFeed", name="calendrierFeed", methods={"GET"})
*/
public function feedAction()
{
$em = $this->getDoctrine()->getManager();
$aquariums = $em->getRepository('AppBundle\Entity\Aquarium')
->findBy(
array('user' => $this->getUser()->getId())
);
$events = $em->getRepository('AppBundle\Entity\Calendrier')
->findBy(array(
'aquarium' => $aquariums
));
$calendrier = array();
foreach ($events as $event) {
$e = array();
$e['id'] = $event->getId();
$e['title'] = $event->getTypeEntretiens() . " pour l'aquarium " . $event->getAquarium()->getNom();
$e['start'] = $event->getDateEntretiens();
if ($event->getRealise()) {
$e['color'] = 'green';
} else {
$e['color'] = 'red';
}
$e['allDay'] = true;
array_push($calendrier, $e);
}
return $this->json($calendrier);
}
这是我的树枝模板:
{% block stylesheets %}
{{ parent() }}
<link rel="stylesheet" href="{{ asset('css/membre/fullcalendar.min.css') }}">
{% endblock %}
{% block body %}
<div id='calendar'></div>
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script src="{{ asset('js/membre/moment.min.js') }}"></script>
<script src="{{ asset('js/membre/jquery.min.js') }}"></script>
<script src="{{ asset('js/membre/fullcalendar.min.js') }}"></script>
<script src="{{ asset('js/membre/fr.js') }}"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#calendar').fullCalendar({
events: '/calendrierFeed',
defaultView: 'month',
selectable:true,
selectHelper:true,
editable:true
});
});
</script>
{% endblock %}
这是我的JSON提要
[{"id":2,"title":"oui pour l\u0027aquarium 200L","start":{"date":"2018-02-12 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"color":"red","allDay":true}]
答案 0 :(得分:1)
您的日期应该是字符串,而不是对象。
我在我的个人项目中检查了我的json feed,我这样做了:
"start":"2018-02-13"
来自文档
活动开始的日期/时间。必需的。
Moment-ish输入,类似于ISO8601字符串。整个API这个 将成为真正的Moment对象。
这意味着您应该格式化日期
$e['start'] = $event->getDateEntretiens()->format('Y-m-d');