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

Symfony6+FullCalendar4:dayGridMonth视图无法显示时间及点标记求助

问题

在Symfony 6 + FullCalendar 4 + CalendarBundle的环境下,想要在dayGridMonth(月视图)的事件前显示时间格式(例如“8p - 事件”),同时当前视图未显示点标记。即使取消注释displayEventTime配置项,时间仍无法正常显示。

核心问题分析与修复步骤

1. 前端eventContent覆盖默认时间渲染

你的eventContent回调完全自定义了事件HTML,只返回处理后的标题,直接覆盖了FullCalendar默认的时间显示逻辑——即使开启displayEventTime也不会生效。

修改前端app.js代码:

  • 取消注释displayEventTime: true
  • 修改eventContent,将格式化后的时间与标题拼接:
document.addEventListener("DOMContentLoaded", () => {
  let calendarEl = document.getElementById("calendar-holder");

  let { eventsUrl } = calendarEl.dataset;

  let calendar = new Calendar(calendarEl, {
    editable: true,
    firstDay: 1,
    height: "auto",
    locales: allLocales,
    locale: 'en',
    eventSources: [
      {
        url: eventsUrl,
        method: "POST",
        extraParams: {
          filters: JSON.stringify({})
        },
        failure: () => {
          // alert("There was an error while fetching FullCalendar!");
        },
      },
    ],
    
    headerToolbar: {
      left: "prev,next today",
      center: "title",
      right: "dayGridMonth,timeGridWeek,timeGridDay,listWeek, listMonth"
    },
    initialView: "dayGridMonth",
    eventDisplay: "block",
    displayEventTime: true, // 开启时间显示
    navLinks: true,
    plugins: [ dayGridPlugin, timeGridPlugin, listPlugin ],
    timeZone: "UTC",
    eventContent: function(arg) {
      // 拼接时间文本和标题,保留换行处理
      let timeText = arg.timeText ? `<span class="fc-event-time">${arg.timeText}</span> - ` : '';
      let titleHtml = arg.event.title.replace(/\n/g, '<br>');
      return {
        html: `${timeText}${titleHtml}`
      }
    },
  });
  let lang = calendarEl.dataset.lang;
  calendar.render();
  calendar.setOption('locale', lang);
});

2. 确保后端事件标记为非全天

只有非全天事件,FullCalendar才会在月视图中显示时间:

  • 确认$this->configDataService->get('eventByTime') == 'YES'的判断逻辑正确,确保带时间的事件被设置为setAllDay(false)
  • 检查$eventStartDate和$eventEndDate是否包含完整的时分秒信息,而非仅日期

3. 关于“点标记”的说明

FullCalendar月视图的显示规则:

  • 全天事件(allDay: true)默认显示为点标记
  • 非全天事件(allDay: false)默认显示为块级事件
    若需非全天事件同时显示时间和点标记,需自定义CSS调整样式,但会与时间显示布局冲突,建议根据需求二选一。

内容的提问来源于stack exchange,提问作者DJ Michael Constanta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:27:50