2017-04-25 74 views
0

我做了2个步骤的自定义表单,我想如果用户点击第2步上的返回按钮表单重定向到第1步并显示用户在开始时输入的数据。这是我的代码如何在Drupal 7中创建多步自定义表单后退按钮?

function example_form($form, &$form_state) { 

    if (!empty($form_state['step_num'])) { 
    return example_step_two($form, $form_state); 
    } 

    $form_state['step_num'] = 1; 

    $form['title'] = array(
    '#type' => 'textfield', 
    '#title' => t('Title'), 
    '#required' => TRUE, 
); 

    $form['next'] = array(
    '#type' => 'submit', 
    '#value' => 'Next', 
    '#submit' => array('example_form_submit'), 
); 

    return $form; 
} 

,这是我的提交功能

function orders_order_form_submit($form, &$form_state) { 

    $form_state['page_values']['1'] = $form_state['values']; 

    if (!empty($form_state['page_values'][2])) { 
    $form_state['values'] = $form_state['page_values'][2]; 
    } 

    $form_state['step_number'] = 2; 
    $form_state['rebuild'] = TRUE; 
} 

,这是我的表单的第二步

function example_form_step_two($form, &$form_state){ 

    $form['title2'] = array(
    '#type' => 'textfield', 
    '#title' => t('Title2'), 
    '#required' => TRUE, 
); 

    $form['back'] = array(
    '#type' => 'submit', 
    '#value' => t('Back'), 
    '#submit' => array('example_form_step_two_back'), 
); 

    $form['submit'] = array(
    '#type' => 'submit', 
    '#value' => 'Submit', 
    '#submit' => array('example_form_step_two_submit'), 
); 

    return $form; 
} 

,这是问题的功能后退按钮

function example_form_step_two_back($form, &$form_state){ 

    $form_state['rebuild'] = TRUE; 
} 

回答

0

看起来像y OU需要测试,如果'step_num'是2 example_form(),而不是如果它不是空:

if ($form_state['step_num'] == 2) { 
    return example_step_two($form, $form_state); 
} 

然后在example_form_step_two_back(),您需要添加:

$form_state['step_num'] = 1; 

要显示的'title'以前用户输入的值,如果该值存在,则必须添加一个'#default_value'元素。