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,"日付" ;:" ;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 に答える