Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 网络表单更改日期隐藏日期_Date_Drupal_Drupal 7_Drupal Webform_Drupal Hooks - Fatal编程技术网

Date 网络表单更改日期隐藏日期

Date 网络表单更改日期隐藏日期,date,drupal,drupal-7,drupal-webform,drupal-hooks,Date,Drupal,Drupal 7,Drupal Webform,Drupal Hooks,我对Drupal7比较陌生,我正在尝试创建一个定制的Web表单。我的目标是添加一个日期(由date模块提供)字段,其中不包含日期选项。因此,它显示月份和年份,隐藏了日期选项 我已经成功地实现了这一点,但只是通过将wholedate字段重新创建为自定义字段,但我想知道是否可以自定义日期模块提供的日期字段 下面是我表格的屏幕截图: 如何创建自定义日期字段: function my_webform_form_alter(&$form, &$form_state) { if

我对Drupal7比较陌生,我正在尝试创建一个定制的Web表单。我的目标是添加一个日期(由date模块提供)字段,其中不包含日期选项。因此,它显示月份和年份,隐藏了日期选项

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

下面是我表格的屏幕截图:

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

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')
          );


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


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

一个可能的解决方案是将日期组件的
日期
字段转换为
隐藏的
字段,而不是
选择
字段类型。这可以通过为该字段添加
#进程
回调并更改数据来实现

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;
}

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

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;
}

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

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

我认为在表单中创建日期字段的过程中,您只需指定月份和年份。默认情况下,它收集年、月、日、小时和分钟。您可以取消选中除年和月之外的所有项目,我认为这将解决您的问题。如果会,请告诉我。这是创建内容类型时的一个很好的解决方案。将日期组件添加到WebForm时,这些配置选项不可用。在configuration->regional->date time->format with only month and year中创建新的自定义日期格式如何?你能在你的“#type”键中调用它吗?不,在向webfromOk添加新组件时不会选择它。我对Drupal也很陌生。但我看到你已经得到了别人的正确答案,你已经找到了解决问题的方法!我为您感到宽慰:)我认为在表单中创建日期字段的过程中,您只需指定月份和年份。默认情况下,它收集年、月、日、小时和分钟。您可以取消选中除年和月之外的所有项目,我认为这将解决您的问题。如果会,请告诉我。这是创建内容类型时的一个很好的解决方案。将日期组件添加到WebForm时,这些配置选项不可用。在configuration->regional->date time->format with only month and year中创建新的自定义日期格式如何?你能在你的“#type”键中调用它吗?不,在向webfromOk添加新组件时不会选择它。我对Drupal也很陌生。但我看到你已经得到了别人的正确答案,你已经找到了解决问题的方法!我替你松了一口气:)是的,正是我在找的是的,正是我在找的