Skip to main content

Saving Form Selection using Form API

Submitted by amitsedai on
During custom form submission we would want to remember the previous selection. There are many ways to do that, which includes using Sessions and variable_set to set the default value but this is an overkill if you wanted to simply preserve/remember the selection in the next page or after submission. The best way is to use $form_state['storage'] in your submit handler to hoard values between steps. Consider an example: <?php function custom_form_submit($form, &$form_state) { $start_date = $form_state['values']['startdate']; $end_date = $form_state['values']['enddate']; $batch = $form_state['values']['batch']; // Store values $form_state['storage']['update_startdate'] = $form_state['values']['startdate']; $form_state['storage']['update_enddate'] = $form_state['values']['enddate']; $form_state['storage']['update_batch'] = $form_state['values']['batch']; // Rebuild the form $form_state['rebuild'] = TRUE; // Do other tasks } ?> After form rebuild the form would be changed to: <?php function custom_form(&$form_state) { $form = array(); $form['startdate'] = array( '#type' => 'date_popup', '#title' => 'Start Date', '#date_format' => 'Y-m-d', '#date_label_position' => 'inline', '#required' => TRUE, '#tree' => TRUE, ); //This gets automatically added in form after rebuild if (isset($form_state['storage']['update_startdate'])) { $form['startdate']['#default_value'] = $form_state['storage']['update_startdate']; } //... Additional form elements return $form; } -- Source: http://stackoverflow.com/questions/1077806/drupal-formwant-to-show-previous-form-value-as-default-value-on-page ?>