mapescador/chartjs-bundle

直接从ORM实体构建出色的图表

2.0.3 2022-02-14 13:41 UTC

This package is auto-updated.

Last update: 2024-09-30 18:29:41 UTC


README

使用 MukadiChartJsBundle 直接从ORM实体构建出色的图表,创建与您的数据模型直接映射的高质量图表。MukadiChartJsBundle 是为symfony适配的 mukadi/chartjs-builder 包。以下是提供的一些功能:

  • 一个从DQL查询构建图表的服务
  • 一个从原生SQL查询构建图表的服务
  • 一个用于在视图中渲染图表的Twig扩展

安装

通过运行以下命令通过composer安装此包

php composer.phar require mukadi/chartjs-bundle

然后运行 php bin/console assets:install 以在公共网页目录中安装资源

图表构建器

该包提供两个图表构建器作为服务

您可以将图表构建器当作任何其他symfony服务一样使用

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Mukadi\Chart\Utils\RandomColorFactory;
use Mukadi\ChartJSBundle\Chart\Builder
use Mukadi\Chart\Chart;

class AppController extends Controller{

    public function chart(Builder $builder) {
        $builder
            ->query('SELECT COUNT(*) total, p.type FROM \App\Entity\Post p GROUP BY p.type')
            ->addDataset('total','Total',[
                "backgroundColor" => RandomColorFactory::getRandomRGBAColors(6)
            ])
            ->labels('type')
        ;

        $chart = $builder->buildChart('my_chart',Chart::PIE);
        return $this->render('chart.html.twig',[
            "chart" => $chart,
        ]);
    }
}

您也可以传递一个Doctrine\ORM\Query对象而不是DQL查询。这允许您使用存储图表查询的仓库。

    ...
    $query = $this->getDoctrine()->getManager()->createQuery('SELECT COUNT(*) total, p.type FROM \App\Entity\Post p GROUP BY p.type');

    $builder
            ->query($query)
            ->addDataset('total','Total',[
                "backgroundColor" => RandomColorFactory::getRandomRGBAColors(6)
            ])
            ->labels('type')
        ;
...

如果您想了解更多关于图表构建的信息,请参阅 mukadi/chartjs-builder 文档

在Twig模板中渲染图表

在twig模板中使用用于图表渲染的专用函数

{{ mukadi_chart(chart) }}

不要忘记在您的页面中包含库

<script src="/bundles/mukadichartjs/Chart.bundle.min.js"></script>
<script src="/bundles/mukadichartjs/mukadi.chart.min.js"></script>

就是这样!