Drupal 7 - 如何更改 Webform 提供的 "select" 组件?
Drupal 7 - How to alter the "select" component given by Webform?
我需要向 Webform 给定的组件 "Select options"(slug 是 select
)添加一个新的自定义字段“coeff
”。
我使用 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,
);
}
}
}
这样就可以了。当我编辑 "Select options" 组件时,我的字段可见。但是我的值没有保存在这个字段中。
我的问题是:
我必须在这个表单中添加一个提交回调来保存这个自定义字段吗?如果是,它是如何工作的?
如果我想做一个循环来制造很多问题,我该怎么办?我知道我必须构建一个节点对象并最终调用 node_save() ...但是我必须在哪里放置这个自定义字段的值“coeff
”?
如果你没有答案也不错,请给我线索。
非常感谢。
您需要将字段名称更改为 $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,
);
}
}
我需要向 Webform 给定的组件 "Select options"(slug 是 select
)添加一个新的自定义字段“coeff
”。
我使用 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,
);
}
}
}
这样就可以了。当我编辑 "Select options" 组件时,我的字段可见。但是我的值没有保存在这个字段中。
我的问题是:
我必须在这个表单中添加一个提交回调来保存这个自定义字段吗?如果是,它是如何工作的?
如果我想做一个循环来制造很多问题,我该怎么办?我知道我必须构建一个节点对象并最终调用 node_save() ...但是我必须在哪里放置这个自定义字段的值“
coeff
”?
如果你没有答案也不错,请给我线索。
非常感谢。
您需要将字段名称更改为 $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,
);
}
}