我遇到了一个问题,我正在尝试使用 twig 数据通过 ChartJS 创建一个图表(饼图)。
图表标签使用一个数组,所以我给它一个 Twig 数组,如下所示:
var myChart = new Chart(ctx, {
type: 'pie',
data: {
labels: ({{array|json_encode()|raw}})
但它显示“object Object”。出于我的目的,我想显示该对象的属性,在该示例中:“intitule”
非常感谢。
最佳答案
我建议你自己写一个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/