【问题标题】:Webform form alter date hide day网络表单更改日期隐藏日期
【发布时间】:2013-12-03 12:33:45
【问题描述】:

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

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

下面是我的表单截图:

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

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

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

【问题讨论】:

  • 我认为在表单中创建日期字段期间,您只需指定月份和年份。默认情况下,它收集年、月、日、小时和分钟。您可以取消选中除年和月之外的所有选项,我认为它可以解决您的问题。告诉我会不会。
  • 当您创建内容类型时,这是一个很好的解决方案。将日期组件添加到网络表单时,这些配置选项不可用
  • 那么如何在配置 -> 区域 -> 日期时间 -> 仅包含月份和年份的格式中创建新的自定义日期格式?你能在你的'#type'键中调用它吗?
  • 不,在将新组件添加到 webfrom 时不会拾取此内容
  • 好的。我对 Drupal 也很陌生。但是我看到您已经得到了其他人的正确答案,并且您已经找到了解决问题的方法!我为你松了一口气:)

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


【解决方案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;
}

【讨论】:

  • 是的,正是我想要的
【解决方案2】:

网络表单现在允许隐藏日期的日、月或年。详情请见this issue

【讨论】:

    猜你喜欢
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多