You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为symfony/ux-chartjs添加ChartJS DateTime适配器?

解决Symfony UX ChartJS添加日期时间适配器的问题

当使用Symfony UX ChartJS且坐标轴设置为时间单位时,由于ChartJS 3+默认不含日期适配器,会出现错误:

This method is not implemented: Check that a complete date adapter is provided.

直接在app.js引入chartjs-adapter-moment会导致适配器注册到全局node_modules里的ChartJS副本,而Symfony UX使用的是自身vendor/symfony/ux-chartjs/assets/node_modules/chart.js下的实例,因此需要通过以下方式正确注册:

步骤1:安装依赖包

先安装适配器及依赖的moment库:

npm install chartjs-adapter-moment moment --save-dev

步骤2:注册适配器到UX的ChartJS实例

有两种方式实现:

方式一:通过controllers.json全局配置

修改assets/controllers.json,找到Symfony\\UX\\Chartjs\\Controller\\ChartController的配置项,添加导入和初始化逻辑:

{
    "Symfony\\UX\\Chartjs\\Controller\\ChartController": {
        "imports": [
            "chartjs-adapter-moment"
        ],
        "initialize": "async (controller) => {
            const { Chart } = await import('@symfony/ux-chartjs/chartjs');
            import('chartjs-adapter-moment').then((adapter) => {
                Chart.register(adapter.default);
            });
        }"
    }
}

方式二:自定义Stimulus控制器扩展

创建assets/controllers/chartjs.custom.js文件,内容如下:

import { Chart } from '@symfony/ux-chartjs/chartjs';
import adapter from 'chartjs-adapter-moment';

// 注册适配器到UX使用的Chart实例
Chart.register(adapter);

export default class extends Controller {}

然后在assets/controllers.json中让UX的Chart控制器继承这个自定义控制器:

{
    "Symfony\\UX\\Chartjs\\Controller\\ChartController": {
        "extends": "./chartjs.custom.js"
    }
}

步骤3:更新前端资源并清除缓存

执行以下命令确保配置生效:

php bin/console cache:clear
npm run build

内容的提问来源于stack exchange,提问作者Joyce Babu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 05:23:20