javascript - ChartJS + twig symfony

标签 javascript arrays symfony chart.js

我遇到了一个问题,我正在尝试使用 twig 数据通过 ChartJS 创建一个图表(饼图)。

图表标签使用一个数组,所以我给它一个 Twig 数组,如下所示:

var myChart = new Chart(ctx, {
    type: 'pie',
    data: {
        labels: ({{array|json_encode()|raw}})

但它显示“object Object”。出于我的目的,我想显示该对象的属性,在该示例中:“intitule”

My array

非常感谢。

最佳答案

我建议你自己写一个Twig extension并为其添加过滤功能:

<强>1。创建扩展类并添加名为chart的过滤器:

// src/AppBundle/Twig/AppExtension.php
namespace AppBundle\Twig;

class AppExtension extends \Twig_Extension
{
    public function getFilters()
    {
        return array(
            new \Twig_SimpleFilter('chart', array($this, 'chartFilter')),
        );
    }

    public function chartFilter($items, $key = 'intitule')
    {
        $output = [];
        foreach ($items as $item {
            if (array_key_exists($key, $item)) {
                $output[] = $item[$key];
            }   
        }    

        return json_encode($output));
    }
}

<强>2。创建服务

取决于您的services.yml您可能需要为扩展创建服务的定义:

app.twig_extension:
    class: AppBundle\Twig\AppExtension
    tags:
        - { name: twig.extension }

<强>3。在您的 View 中使用过滤器

您可以像这样使用过滤器:

var myChart = new Chart(ctx, {
    type: 'pie',
    data: {
        labels: ({{array|chart|raw}})

关于javascript - ChartJS + twig symfony,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44569166/

相关文章:

javascript - 如何在app.run中使用异步代码?

javascript - 使用 HTML & CSS & JS 创建流畅的全屏布局的最佳技术?

javascript - 平板电脑/ipad 的 window.onzoom 事件?

php - 如何从php中的按钮数组中提取特定的id号?

php - 为 Symfony MicroKernel 注册自定义配置命名空间

Javascript 阻止输入文件提交到数据库

javascript - 无法访问 React Component 中的 Javascript 对象

c# - 如何从 C# 数组中删除重复项?

postgresql - 将 Symfony 项目连接到 docker 数据库

symfony - 将动态变量传递给服务构造函数