如何在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
相关产品推荐
相关产品推荐

