在Drupal中将变量从表单传递到另一个表单

时间:2014-05-27 09:27:42

标签: drupal drupal-7

假设我有Drupal的自定义模块。
我想让用户输入他们在第一种形式中所具有的技能,然后在第二种形式中显示他们作为标题的技能并在文本字段中键入他们技能的百分比。

function skillbar_form($form, &$form_state) {
  $form['html5'] = array(
    '#type' => 'textfield',
    '#title' => t('HTML5'),
    '#default_value' => variable_get('html5'),
    '#description' => t('Enter a percent of your HTML5 skill'),
  );
  return(system_settings_form($form));
}

snapshot

2 个答案:

答案 0 :(得分:1)

如果您使用表单API构建表单,那么

Multistep Form是您的朋友。

否则,有各种模块可以帮助您构建具有多个步骤的表单。其中有几个是:

  1. Multi-step forms
  2. Multi-Step Registration
  3. 注意:多步骤表单通常会从各个步骤收集所有数据。数据主要在最后一步提交(这也是最佳做法)。

答案 1 :(得分:1)

您可以通过第一个表单的提交表单中的URL将数据从一个表单传递到另一个表单。

function skillbar_form_submit($form, &$form_state){
$data_a = $form_state['values']['html5'];

 $form_state['redirect'] = array('url_page2', $data_a);
}

在另一种形式中,只需通过传递$ data_a作为参数来检索数据。所以$ var的值为' html5'。

example_form($form ,&$form_state, $var){
  ...
}

对于URL,您必须以items数组

发送它
  $items['url_page2/%'] = array(

  'page callback' => 'drupal_get_form',
  'page arguments' => array('page2_form', 1),
  'type' => MENU_CALLBACK,
  'access callback' => TRUE,
);