将Php数组作为Javascript数组值传递

丹妮尔·罗斯(Danielle Rose)

我正在为我的项目添加Highcharts。我想从数据库值中填充Javascript数组。

{% extends '::base.html.twig' %}

{% block stylesheets %}
  {{ parent() }}
{% endblock %}

{% block body -%}
 <div class="page-header">
     Supporters
 </div>
 <div id="container" style="min-width: 300px; height: 400px; margin: 0 auto"></div>
{% endblock %}

{% block javascripts %}
{{ parent() }}
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>
<script>
    $(function () {
        $('#container').highcharts({
            chart: {
                type: 'column'
            },
            title: {
                text: 'World\'s largest cities per 2014'
            },
            subtitle: {
                text: 'Source: <a href="http://en.wikipedia.org/wiki/List_of_cities_proper_by_population">Wikipedia</a>'
            },
            xAxis: {
                type: 'category',
                labels: {
                    rotation: -45,
                    style: {
                        fontSize: '13px',
                        fontFamily: 'Verdana, sans-serif'
                    }
                }
            },
            yAxis: {
                min: 0,
                title: {
                    text: 'Population (millions)'
                }
            },
            legend: {
                enabled: false
            },
            tooltip: {
                pointFormat: 'Population in 2008: <b>{point.y:.1f} millions</b>'
            },
            series: [{
                name: 'Population',

                /*data: [
                    ['Shanghai', 23.7],
                    ['Lagos', 16.1],
                    ['Instanbul', 14.2],
                    ['Karachi', 14.0],
                    ['Mumbai', 12.5],
                    ['Moscow', 12.1],
                    ['São Paulo', 11.8],
                    ['Beijing', 11.7],
                    ['Guangzhou', 11.1],
                    ['Delhi', 11.1],
                    ['Shenzhen', 10.5],
                    ['Seoul', 10.4],
                    ['Jakarta', 10.0],
                    ['Kinshasa', 9.3],
                    ['Tianjin', 9.3],
                    ['Tokyo', 9.0],
                    ['Cairo', 8.9],
                    ['Dhaka', 8.9],
                    ['Mexico City', 8.9],
                    ['Lima', 8.9]
                ],*/
                dataLabels: {
                    enabled: true,
                    rotation: -90,
                    color: '#FFFFFF',
                    align: 'right',
                    format: '{point.y:.1f}', // one decimal
                    y: 10, // 10 pixels down from the top
                    style: {
                        fontSize: '13px',
                        fontFamily: 'Verdana, sans-serif'
                    }
                }
            }]
        });
    });
</script>
{% endblock %}

我想从数据库中的真实值中替换这些伪数据。我创建了一个方法,该方法将调用Doctrine并检索thos记录。到目前为止,我可以使用Symfony的转储工具成功检索这些数据。

 $em = $this->getDoctrine()->getManager();
    $province = $em->getRepository('DuterteBundle:Grps')->createQueryBuilder('g')
      // ->join('p.region', 'r')
      // ->where('r.id =:x')
      // ->setParameter('x', 1)
       ->orderBy('g.name', 'ASC')
       ->getQuery()
       ->getResult();

   // $dat = $this->container->get('duterte.twig.province_voters_extension');
    $datas = array();//initialise array
        foreach ($province as $r) {

           // $datas[] = array($r->getName(),(int)$dat->a($r->getId()),$r->getName());
            $datas[] = array($r->getName(),123);
        }

    $data = $datas;
    echo '<pre>';
    \Doctrine\Common\Util\Debug::dump($data);
    echo '</pre>';
    return $this->render('GraphBundle:Default:group.html.twig', array(
        'data' => $data
    ));

变量数据包含要在Javascript数据变量中填充的真实数据。如何实现此目的?

 <script>
  ...
   data= <?php $data ?>

   /*data: [
            ['Shanghai', 23.7],
            ['Lagos', 16.1],
            ['Instanbul', 14.2],
            ['Karachi', 14.0],
            ['Mumbai', 12.5],
    */


 </script>

在Twig环境中不起作用

约翰·诺埃尔

尝试一下{{ data|json_encode|raw }}默认情况下,Twig会转义HTML的所有内容,|raw过滤器会阻止这种情况。

同样,如果您遇到json_encode调用创建JavaScript对象{}而不是数组的问题[],只需array_merge在将数据传递给Twig之前调用您的数据即可:

$data = array_merge($data);

这将重新设置数组的键以使用数字索引,并在使用时正确地转换为JavaScript数组json_encode

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将值从html作为数组传递给javascript

来自分类Dev

从php将数组作为javascript函数参数传递

来自分类Dev

从php将数组作为javascript函数参数传递

来自分类Dev

将数组作为属性值传递

来自分类Dev

将PHP数组值传递给JavaScript变量

来自分类Dev

如何将php数组值传递给javascript变量

来自分类Dev

我可以将PHP数组作为JSON编码的对象作为选择字段值传递并与Javascript一起使用吗?

来自分类Dev

PHP将数组项传递给javascript

来自分类Dev

将PHP数组传递给Javascript变量

来自分类Dev

将PHP变量传递给Javascript数组

来自分类Dev

将多维数组从PHP传递到JavaScript

来自分类Dev

将数组从JavaScript传递到PHP

来自分类Dev

将PHP数组传递给JavaScript的问题

来自分类Dev

将数组作为参数传递

来自分类Dev

将数组作为属性传递

来自分类Dev

将数组作为参数传递

来自分类Dev

将数组作为参数传递

来自分类Dev

将数组作为参数传递

来自分类Dev

将参数作为数组传递

来自分类Dev

将数组作为参数传递

来自分类Dev

将向量数组作为函数参数传递以更改原始值

来自分类Dev

Wordpress ACF将变量作为值传递到args数组

来自分类Dev

将多个选定的值和文本作为数组传递

来自分类Dev

将类数组作为对象数组传递

来自分类Dev

如何通过Ajax将php数组作为javascript数组获取

来自分类Dev

PHP传递数组作为参考

来自分类Dev

将数组作为单个参数传递给php函数

来自分类Dev

将php数组作为链接参数传递给ajax函数

来自分类Dev

Laravel - 将 php 变量作为数组传递给 JS