Symfony3 - fullcalendar.js 事件未显示
Symfony3 - fullcalendar.js events not displaying
我在 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}]
你的日期应该是一个字符串,而不是一个对象。
我在我的个人项目中查看了我的 json 提要,我是这样得到的:
"start":"2018-02-13"
来自文档
The date/time an event begins. Required.
A Moment-ish input, like an ISO8601 string. Throughout the API this
will become a real Moment object.
这意味着您应该格式化日期
$e['start'] = $event->getDateEntretiens()->format('Y-m-d');
我在 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}]
你的日期应该是一个字符串,而不是一个对象。
我在我的个人项目中查看了我的 json 提要,我是这样得到的:
"start":"2018-02-13"
来自文档
The date/time an event begins. Required.
A Moment-ish input, like an ISO8601 string. Throughout the API this will become a real Moment object.
这意味着您应该格式化日期
$e['start'] = $event->getDateEntretiens()->format('Y-m-d');