0

嗨,我想将带有事件的数据发送到我的模板,我正在使用 jquery fullcalendar 我有控制器

$result = $query->getArrayResult();
$serializer = $this->get('jms_serializer');
$json = $serializer->serialize($result, 'json');
return $this->render('SurgeryPatientBundle:VisitsCalendar:visitscalendar.html.twig',array('events'=>$json ,'content_type' => 'application/json'));

在我的模板中,我有

<meta  content="{{content_type}}" http-equiv="Content-Type" >   </meta>
events: {{events}}

当我执行这个控制器时,JSON 值看起来像这样(我做了距离,你会看到差异)

[{"id":1,"date":"2013-01-02T00:00:00+0100&

和错误 Uncaught SyntaxError:Unexpected token{ 。当我将模板更改为

events: {{events|raw}}

我得到正确的数据

[{"id":1,"date":"2013-01-02T00:00:00+01

但是我在 fullcalendar.min.js 中遇到了那种错误

Uncaugt TypeError: Cannot call method 'replate of undefinde"

如果我将开始日期设置为 2013-01-24T15:25:00+0100 那么它可以工作

我做错了什么?对不起我的英语不好

编辑:它可能不起作用,因为 eventObject 中没有标题。

4

2 回答 2

0

这就是它对我有用的方式。

树枝内部:

        {% set events %}
            {% render 'MyBundle:MyController:getEventsForCalendar' %}
        {% endset %}

        events = {{ events|raw }};

        var selector = '#calendar';
        $(selector).fullCalendar({
            ...
            events: events
        });

我的getEventsForCalendarAction()

public function getEventsForCalendarAction()
{
    $events = EventQuery::create()
        ->find();

    $items = array();
    /** @var $event Event */
    foreach ($events as $event) {
        $item['title'] = $event->getTitle();
        $item['startY'] = $event->getStartAt('Y');
        $item['startM'] = $event->getStartAt('m') - 1;
        $item['startD'] = $event->getStartAt('d');
        $item['endY'] = $event->getEndAt('Y');
        $item['endM'] = $event->getEndAt('m') - 1;
        $item['endD'] = $event->getEndAt('d');
        $item['url'] = $this->get('router')->generate('event_page', array('id' => $event->getId()));

        $items[] = $item;
    }

    return $this->render('MyBundle:MyController:myTemplate.html.twig', array(
        'items' => $items
    ));
}

我的myTemplate.html.twig

[
{% for item in items %}
    {
        title: '{{ item.title }}',
        start: new Date({{ item.startY }}, {{ item.startM }}, {{ item.startD }}),
        end: new Date({{ item.endY }}, {{ item.endM }}, {{ item.endD }}),
        url: '{{ item.url }}'
    }{% if loop.last %}{% else %},{% endif %}
{% endfor %}
]

干杯

于 2013-01-24T16:46:29.050 回答
0

而不是events: {{events|raw}},尝试events: {{events|safe}}。这对我有用。

于 2015-07-23T16:02:42.243 回答