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

如何在Drupal自定义表单中定义Datetime Range日期范围字段

Drupal 自定义表单 Datetime Range 字段实现方案

启用核心「Datetime Range」模块后,无需额外编写自定义字段逻辑,直接调用表单API原生支持的daterange类型即可,配置规则和你已使用的datetime类型字段大部分通用。

最简实现代码

$form['field_time_range'] = [
  '#type' => 'daterange',
  '#title' => $this->t('选择时间范围'),
  '#description' => $this->t('请分别选择开始、结束时间'),
];

常用配置属性

可以根据需求添加以下常用配置:

$form['field_time_range'] = [
  '#type' => 'daterange',
  '#title' => $this->t('活动时间'),
  '#required' => TRUE,
  // 仅选日期、不显示时间选择器
  '#date_time_element' => 'none',
  // 自定义日期/时间格式
  '#date_date_format' => 'Y-m-d',
  '#date_time_format' => 'H:i',
  // 限定可选日期范围
  '#date_min' => '2024-01-01',
  '#date_max' => '2024-12-31',
  // 设置默认值,必须包含value、end_value两个键
  '#default_value' => [
    'value' => date('Y-m-d H:i', time()),
    'end_value' => date('Y-m-d H:i', strtotime('+7 days')),
  ],
];

提交值处理

表单提交后,该字段的取值为关联数组结构:

  • $form_state->getValue('field_time_range')['value']:开始时间,为DrupalDateTime实例
  • $form_state->getValue('field_time_range')['end_value']:结束时间,为DrupalDateTime实例
    可直接调用format()方法格式化后存入数据库或做后续业务处理。

内容的提问来源于stack exchange,提问作者Rasmus L. Knabe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 01:09:24