Webform表单更改日期隐藏日

时间:2013-12-03 12:33:45

标签: date drupal drupal-7 drupal-webform drupal-hooks

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

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

以下是我的表单的屏幕截图:enter image description here

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

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(正在使用的那个)不同的钩子。

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

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

Webform现在允许隐藏日期的日期,月份或年份。有关详细信息,请参阅this issue