2017-06-15 112 views
1

我有一個問題,我試圖創建ChartJS使用樹枝數據的圖表(餅)。ChartJS + twig symfony

圖表標籤使用數組,所以我給一個樹枝陣列以這樣的:

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

但它顯示「對象的對象」。對於我的目的,我想顯示對象的屬性,在例如:「intitule」

My array

非常感謝。

回答

1

我建議你寫一個自己的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.使用視圖中的過濾器

,你可以使用它像這樣使用過濾器:

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