我正在尝试制作FullCalendar日历(我已使用Symfony2集成到我的应用程序中)显示数据库中加载的事件。实际上,当我使用下面的代码成功完成此操作时,代码是将事件显示在日历中的函数代码:
public function LoadeventsAction() {
$eventg = new eventsgroupe();
$securityContext = $this->get('security.context');
$token = $securityContext->getToken();
$user = $token->getUser();
$id = $user->getId();
$em = $this->getDoctrine()->getManager();
$groupe=$this->getRequest('groupe');
$idg = intval($groupe->attributes->get('id'));
$qb = $em->createQueryBuilder();
$qb->select('e')
->from('IkprojGroupeBundle:eventsgroupe', 'e')
->where(' e.idEventGroupe = :ig');
//$qb->setParameter("i", $id);
$qb->setParameter("ig", $idg);
$query = $qb->getQuery();
$event = $query->getResult();
$rows = array();
foreach ($event as $obj) {
$rows[] = array(
'id' => $obj->getId(),
'title' => "'" . $obj->getTitle() . "'",
'start' => '"' . $obj->getStart()->format('Y-m-d') . '"',
'end' => '"' . $obj->getEnd()->format('Y-m-d') . '"',
'location' => '"' . $obj->getLocation(). '"',
'description' => '"' . $obj->getDescription(). '"',
//ajoute dees informations concernant levenement
);
}
$response = new Response(json_encode($rows));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
这是我所拥有的日历的屏幕截图:
如上所述,日历以月视图显示。请关注日期事件:2014年9月3日。实际上,当我点击“day”按钮时,我获得了这个视图:
正如您在上面的屏幕截图中看到的,所有事件都是“全天”事件(这意味着持续一整天的事件),而每一个事件都在特定时间开始,并在特定时间结束。例如,这是数据库中“学习css”事件的记录(最后一个):
正如您在上面的屏幕截图中看到的,日期时间字段具有以下格式:'Y-m-d H:i:s'。
由于我需要时间在日视图中正确显示事件(而不是显示为“全天”事件),我更改了函数的代码(我的意思是我在这篇文章中放的第一个)。实际上,我将'start' => '"' . $obj->getStart()->format('Y-m-d H:i:s') . '"',
而不是'start' => '"' . $obj->getStart()->format('Y-m-d') . '"',
放在了'end' => '"' . $obj->getEnd()->format('Y-m-d H:i:s') . '"',
而不是'end' => '"' . $obj->getEnd()->format('Y-m-d') . '"',
。所以我的新代码如下:
class EventgroupeController extends Controller
{
public function LoadeventsAction() {
$eventg = new eventsgroupe();
$securityContext = $this->get('security.context');
$token = $securityContext->getToken();
$user = $token->getUser();
$id = $user->getId();
$em = $this->getDoctrine()->getManager();
$groupe=$this->getRequest('groupe');
$idg = intval($groupe->attributes->get('id'));
$qb = $em->createQueryBuilder();
$qb->select('e')
->from('IkprojGroupeBundle:eventsgroupe', 'e')
->where(' e.idEventGroupe = :ig');
//$qb->setParameter("i", $id);
$qb->setParameter("ig", $idg);
$query = $qb->getQuery();
$event = $query->getResult();
$rows = array();
foreach ($event as $obj) {
$rows[] = array(
'id' => $obj->getId(),
'title' => "'" . $obj->getTitle() . "'",
'start' => '"' . $obj->getStart()->format('Y-m-d H:i:s') . '"',
'end' => '"' . $obj->getEnd()->format('Y-m-d H:i:s') . '"',
'location' => '"' . $obj->getLocation(). '"',
'description' => '"' . $obj->getDescription(). '"',
//ajoute dees informations concernant levenement
);
}
$response = new Response(json_encode($rows));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
请关注此代码部分:
foreach ($event as $obj) {
$rows[] = array(
'id' => $obj->getId(),
'title' => "'" . $obj->getTitle() . "'",
'start' => '"' . $obj->getStart()->format('Y-m-d H:i:s') . '"',
'end' => '"' . $obj->getEnd()->`format('Y-m-d H:i:s') . '"',`
'location' => '"' . $obj->getLocation(). '"',
'description' => '"' . $obj->getDescription(). '"',
//ajoute dees informations concernant levenement
);
}
问题在于,由于我更改了代码,因此日历不会在任何视图中显示任何事件。很明显,问题来自这个代码部分:format('Y-m-d H:i:s') . '"',
。所以我的问题是:什么是正确的代码?以及如何处理具有此格式的日期时间的事件'Y-m-d H:i:s'?
答案 0 :(得分:1)
我假设您使用Carbon作为日期格式。如果是这样,您的问题不是日期,而是您的对象值。您不需要在每个字段的开头和结尾添加"'"
。
将你的foreach改为:
foreach($event as $obj) {
$rows[] = array(
'id' => $obj->getId(),
'title' => $obj->getTitle(),
'start' => $obj->getStart()->format('Y-m-d H:i:s'),
'end' => $obj->getEnd()->format('Y-m-d H:i:s'),
'location' => $obj->getLocation(),
'description' => $obj->getDescription(),
//ajoute dees informations concernant levenement
);
}
如果您追加'
。您的JSON对象将具有以下格式:
[{"id":"387","title":"'Learning PHP'","start":"\"2014-09-03 13:00:00\"","end":"\"2014-09-03 15:00:00\"","location":"\"at home\"","description":"\"learning classes lesson\""}]
如果删除该字符,它将具有以下格式(可正常工作):
[{"id":"387","title":"Learning PHP","start":"2014-09-03 13:00:00","end":"2014-09-03 15:00:00","location":"at home","description":"learning classes lesson"}]