Drupal 7-如何更改Webform给定的“选择”组件?

时间:2018-07-27 15:53:28

标签: drupal-7 components field alter drupal-webform

我的需要是向Webform提供的组件“选择选项”(提示为coeff)中添加一个新的自定义字段“ select”。

我使用hook_form_alter创建我的自定义字段:

function my_module_form_alter(&$form, &$form_state, $form_id){
    if ($form_id == 'webform_component_edit_form') {
        if ($form['type']['#value'] == 'select') {
            $form['coeff'] = array(
                '#type' => 'textfield',
                '#title' => t('Coefficient'),
                '#default_value' => '1',
                '#description' => t('Set coefficient value for this question.'),
                '#size' => 2,
                '#maxlength' => 2,
            );
        }
    }
}

这样就可以了。当我编辑“选择选项”组件时,可以看到我的字段。但是我的值没有保存在此字段中。

我的问题是:

  • 是否已在此表单中添加了一个提交回调以保存此自定义字段?如果是,它是如何工作的?

  • 如果我想做一个循环来提出很多问题,该怎么办?我知道我必须构建一个节点对象并最终调用node_save()...,但是我必须在其中将此自定义字段的值放入“ coeff”?

如果您没有答案,那还不错,请给我提示。

非常感谢。

1 个答案:

答案 0 :(得分:1)

您需要将字段名称更改为$ form ['extra'] ['coeff'],并更改默认值以显示保存的字段:

 if ($form_id == 'webform_component_edit_form') {

    if ($form['type']['#value'] == 'select') {
      $form['extra']['coeff'] = array(
        '#type' => 'textfield',
        '#title' => t('Coefficient'),
        '#default_value' => $form['#node']->webform['components'][1]['extra']['coeff'],
        '#description' => t('Set coefficient value for this question.'),
        '#size' => 2,
        '#maxlength' => 2,
      );
    }

  }