【问题标题】:Use string in Highcharts data在 Highcharts 数据中使用字符串
【发布时间】:2015-01-13 21:30:10
【问题描述】:

我正在使用 Symfony2。我将一个字符串传递给一个显示饼图的视图,并尝试将此字符串传递到数据部分。

我的字符串是:[['EURUSD',7],['GBPUSD',0],['USDEUR',1]]

我像这样从我的 symfony 控制器中得到它:

<?php {{liste}}; ?>

但是当我尝试将它放入这样的数据中时,图表无法正确加载

<script>
...
  series: [{ type: 'pie',name: '',data:  "<?php  {{liste}};?>" 
...
</script>

但是当我这样做时

data: [['EURUSD',7],['GBPUSD',0],['USDEUR',1]]

有效!

编辑:这是我的观点的代码

<html>
<head>
<title>Chart</title>
<!-- Chargement des librairies: Jquery & highcharts -->
<script type='text/javascript' src="{{asset('bundles/user/js/jquery.min.js')}}"></script>
<script type="text/javascript" src="{{asset('bundles/user/js/highcharts.js')}}" ></script>
</head>

<body>
    <p><div align="center">{{liste}}</div></p>
    <p>
<!-- Chargement des variables, et paramètres de Highcharts -->

<script type="text/javascript">
    $(function () {
    var chart;
    $(document).ready(function() {

        Highcharts.getOptions().colors = Highcharts.map(Highcharts.getOptions().colors, function(color) {
            return {
                radialGradient: { cx: 0.5, cy: 0.3, r: 0.7 },
                stops: [
                    [0, color],
                    [1, Highcharts.Color(color).brighten(-0.3).get('rgb')]
                ]
            };
        });

        chart = new Highcharts.Chart({
            chart: {
                renderTo: 'container',
                plotBackgroundColor: null,
                plotBorderWidth: null,
                plotShadow: false
            },
            title: {
                text: 'myData'
            },
            tooltip: {
                pointFormat: '<b>{point.percentage}%</b>',
                percentageDecimals: 1
            },
            plotOptions: {
                pie: {
                    allowPointSelect: true,
                    cursor: 'pointer',
                    dataLabels: {
                        enabled: true,
                        color: '#000000',
                        connectorColor: '#000000',
                        formatter: function() {
                            return '<b>'+ this.point.name +'</b>: '+ Highcharts.numberFormat(this.percentage, 1) +' %';
                        }
                    }
                }
            },
            series: [{
                type: 'pie',
                name: '',
                data:  "<?php  {{liste}};?>" 

            }]
        });
    });

});</script>
<!-- Affichage du graphique -->
<div id="container" style="width:100%; height:400px;"> 
</div></p>
</body>
</html>

【问题讨论】:

  • 您的项目使用哪个模板引擎?枝条?简单的PHP?
  • 我使用 twig,我已经验证了我传递的字符串的内容及其与我在工作时传递的内容的身份。
  • 所以@Thomas 的回答是好方法!

标签: javascript php string symfony highcharts


【解决方案1】:

问题是您的字符串已经是 JS 格式,并且您也将它作为字符串传递给模板。删除引号,它应该可以工作。此外,您可能想要使用raw 过滤器,这样树枝就不会逃脱您的字符。示例:

series: [{
    type: 'pie',
    name: '',
    data: {{ liste|raw }}
}]

【讨论】:

    【解决方案2】:

    因为我相信你使用 twig 作为模板引擎,所以忘记 php 包括括号。

    <script>
    ...
      series: [{ type: 'pie',name: '',data: "{{liste}}" }]
    ...
    </script>
    

    【讨论】:

    • 当我这样做时,图表根本不显示!!
    • 最终的 HTML 是什么样的?
    • 如果你使用 twig 作为模板引擎,你不应该在你的模板中使用 symfony.com/doc/current/book/templating.html
    • 是的,我知道,因为我使用的是 twig,所以我会按照您在我的观点中的建议进行操作。但是即使我这样做 {{MyString}} 它也不起作用。你可以看到我在正文中使用它来显示我的字符串以确保它是正确的!
    【解决方案3】:

    问题在于对值的 json 解释,所以使用 json_encode 过滤器

    series: [{
        type: 'pie',
        name: '',
        data: {{ liste|json_encode|raw }}
    }]
    

    【讨论】:

      猜你喜欢
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 2014-06-08
      相关资源
      最近更新 更多