当datetime格式为'Y-m-d H:i:s'时,FullCalendar日历不显示事件

时间:2014-09-03 16:23:52

标签: symfony events datetime format fullcalendar

我正在尝试制作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;
}

这是我所拥有的日历的屏幕截图: enter image description here 如上所述,日历以月视图显示。请关注日期事件:2014年9月3日。实际上,当我点击“day”按钮时,我获得了这个视图: enter image description here 正如您在上面的屏幕截图中看到的,所有事件都是“全天”事件(这意味着持续一整天的事件),而每一个事件都在特定时间开始,并在特定时间结束。例如,这是数据库中“学习css”事件的记录(最后一个): enter image description here 正如您在上面的屏幕截图中看到的,日期时间字段具有以下格式:'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'?

1 个答案:

答案 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"}]