1

我对 Drupal 7 比较陌生,我正在尝试创建一个自定义网络表单。我的目标是添加一个没有日期选项的日期(由日期模块提供)字段。所以它显示在月份和年份上,隐藏了日期选项。

我已经设法实现了这一点,但只能通过将整个日期字段重新创建为自定义字段,但我想知道是否可以自定义日期模块提供的日期字段。

以下是我的表格的屏幕截图:在此处输入图像描述

我如何创建自定义日期字段:

function my_webform_form_alter(&$form, &$form_state) {

      if (isset($form['#node']->webform) && $form['#node']->uuid == '00b20537-d5ce-45c2-af37-150c9e73b96d') {

           //$form['submitted']['date']['#type'] = 'hidden';

           $form['ggg'] = array(
            '#type' => 'date_select',
            '#title' => 'Date',
            '#date_format' => 'm/Y',
            '#default_value' => date('Y-m-d')
          );


      }
    }

我尝试了其他方法来隐藏字段组件,但到目前为止似乎没有任何效果。我想知道我是否需要实现一个不同于alter hook(正在使用的那个)的钩子。

关于如何实现这一目标的任何建议?

4

2 回答 2

1

一种可能的解决方案是将day日期组件的字段转换为hidden字段而不是select字段类型。这可以通过#process为该字段添加回调并更改数据来实现。

function YOURMODULE_form_alter(&$form, &$form_state, $form_id)
{
    // Your logic here depending which form to alter
    // ...

    // Add #process for the component with key name 'date'
    $form['submitted']['date']['#process'][] = 'YOURMODULE_process_date';
}

function YOURMODULE_process_date(&$element)
{
    // change type to hidden
    $element['day']['#type'] = 'hidden';

    // set value to first day of the month
    $element['day']['#value'] = '1';

    return $element;
}
于 2013-12-03T17:13:50.430 回答
0

Webform 现在允许隐藏日期的日、月或年。有关详细信息,请参阅此问题

于 2015-08-11T18:19:18.603 回答