function hook_menu() {
$items = array();
$items['ts_multistep'] = array(
'title' => 'ts_multistep',
'page callback' => 'drupal_get_form',
'page arguments' => array('ts_multistep'),
'access callback' => TRUE,
);
return $items;
}
//-------------------------------------- Form 1 ----------------------------------------------------
function ts_multistep($form, &$form_state) {
if (!empty($form_state['page_num']) && $form_state['page_num'] == 2) {
return ts_multistep_page_two($form, $form_state);
}
if (!empty($form_state['page_num']) && $form_state['page_num'] == 3) {
return ts_multistep_page_three($form, $form_state);
}
$form_state['page_num'] = 1;
$form['ts_name'] = array(
'#type' => 'textfield',
'#title' => t('ts_name'),
'#size' => 20,
'#maxlength' => 20,
'#required' => TRUE,
'#default_value' => !empty($form_state['values']['ts_name']) ? $form_state['values']['ts_name'] : '',
);
$form['ts_next'] = array(
'#type' => 'submit',
'#value' => 'Next >>',
'#submit' => array('ts_multistep_ts_next_submit'),
'#validate' => array('ts_multistep_ts_next_validate'),
);
return $form;
}
//----------------------------------------- Form 2 -------------------------------------------------
function ts_multistep_page_two($form, &$form_state) {
$form['email'] = array(
'#type' => 'textfield',
'#title' => t('Email'),
'#required' => TRUE,
'#default_value' => !empty($form_state['values']['email']) ? $form_state['values']['email'] : '',
);
$form['back'] = array(
'#type' => 'submit',
'#value' => t('<< Back'),
'#submit' => array('ts_multistep_page_two_back'),
'#limit_validation_errors' => array(),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Next >>'),
'#submit' => array('ts_multistep_page_two_submit'),
);
return $form;
}
//------------------------------------------ Form 3 ------------------------------------------------
function ts_multistep_page_three($form, &$form_state) {
$form['phone'] = array(
'#type' => 'textfield',
'#title' => t('Phone'),
'#required' => TRUE,
'#default_value' => !empty($form_state['values']['phone']) ? $form_state['values']['phone'] : '',
);
$form['back'] = array(
'#type' => 'submit',
'#value' => t('<< Back'),
'#submit' => array('ts_multistep_page_three_back'),
'#limit_validation_errors' => array(),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
'#submit' => array('ts_multistep_page_three_submit'),
);
return $form;
}
//------------------------------------------ Validate -----------------------------------------------
function ts_multistep_ts_next_validate($form, &$form_state) {
// validate code here...
}
//------------------------------------------- Back ---------------------------------------------------
function ts_multistep_page_two_back($form, &$form_state) {
$form_state['values'] = $form_state['page_values'][1];
$form_state['page_num'] = 1;
$form_state['rebuild'] = TRUE;
}
function ts_multistep_page_three_back($form, &$form_state) {
$form_state['values'] = $form_state['page_values'][2];
$form_state['page_num'] = 2;
$form_state['rebuild'] = TRUE;
}
//------------------------------------- Submit Handlers ------------------------------------
function ts_multistep_ts_next_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['page_num'] = 2;
$form_state['rebuild'] = TRUE;
}
function ts_multistep_page_two_submit($form, &$form_state) {
$form_state['page_values'][2] = $form_state['values'];
if (!empty($form_state['page_values'][3])) {
$form_state['values'] = $form_state['page_values'][3];
}
$form_state['page_num'] = 3;
$form_state['rebuild'] = TRUE;
}
function ts_multistep_page_three_submit($form, &$form_state) {
$form_state['page_values'][3] = $form_state['values'];
//dsm($form_state['page_values']);
drupal_set_message(t('The form has been submitted.'));
}
For more information please refer to module Drupal example: form example tutorial 8
- 130 views
Add new comment