2014-12-29 2 views
2

Я пытаюсь заполнить диаграмму флота флота с помощью JSON, созданного из результата запроса доктрины, но безуспешно. Вот подробнее ...Symfony 2.6 - Плохая диаграмма не заполняется должным образом из JSON

Контроллер:

$resultJson = json_encode($query); 

return $this->render('default/index.html.twig', array('result' => $resultJson)); 

JSON результат:

[{"label":"project 1","data":"5"}, 
{"label":"project 2","data":"1"}, 
{"label":"project 3","data":"1"}] 

Javascript:

var data = '{{ result}}'; 
var options = { 
     series: { 
      pie: { 
       show: true, 
       label: { 
        show: true, 
        radius: 0.8, 
        formatter: function (label, series) { 
         return '<div style="...">' + 
         label + ' : ' + 
         Math.round(series.percent) + 
         '%</div>'; 
        }, 
        background: { 
         opacity: 0.8, 
         color: '#000' 
        } 
       } 
      } 
     } 
    }; 

    $.plot($("#flot"), data, options); 

Текущий результат (неопределенные этикетки и более один, чем это необходимо): http://oi61.tinypic.com/28srjut.jpg

Желаемый результат: http://oi59.tinypic.com/sncwtx.jpg

+0

Итак, подождите, вы пишете с Twig результаты данных, правильно? Разве вы не должны удалять одиночные кавычки вокруг кода ветви? Потому что иначе javascript будет воспринимать его как строку, а не объект. –

+0

@ user1231958 Удаление одиночных кавычек дает мне на 'var data' _Uncaught SyntaxError: Неожиданный токен & _ ... ' var data = JSON.parse ({{result}}) '- тот же SyntaxError – ddtr

+0

Можете ли вы опубликовать сгенерированный код javascript ПОСЛЕ ПОЛУЧЕНИЯ страницы? Вы можете легко увидеть это в своем браузере, используя функцию «источник просмотра» (в большинстве браузеров). –

ответ

4

Вы должны удалить одинарные кавычки, как указано, и вам нужно, чтобы выходные данные не были экранированы. Twig автоматически ускользает от ваших двойных кавычек, чтобы быть «безопасным», но это не то, что вы хотите. Оно должно быть:

var data = {{ result|raw }}; 

В качестве примечания, я написал небольшую Flot library и Symfony Flot bundle, который помогает конвертировать PHP массивы в общий ФЛОТЕ форматы, таких как пирог, линия, гистограммы и т.д. Он может быть полезна для вы поможете подготовить данные для Twig.

+0

С {{Ресул t | raw}} 'двойные кавычки ... ' var data = '[{"label": "project 1", "data": "5"}, {"label": "project 2", «data»: «1»}, {«label»: «project 3», «data»: «1»}] '; ' ... но флот Flot имеет одинаковые неправильные значения. Я думаю, что проблема связана с двойными кавычками на числах. https://github.com/flot/flot/blob/master/API.md#data-format Я проверю ваш комплект и библиотеку ... – ddtr

+1

Удалите одинарные кавычки. Это должно быть '{{result | raw}}', а не '' {{result | raw}} '' –

+0

Вот и все, спасибо вам, ребята. 'var data = {{result | raw}};' ... 'var data = [{" label ":" project 1 "," data ":" 5 "}, {" label ":" project 2 "," data ":" 1 "}, {" label ":" project 3 "," data ":" 1 "}];' – ddtr