Question: I am building a multistep form using ctools, basically following [this approach](http://preprocess.me/multi-steps-form-in-drupal-7-with-ctools). Now I want the following behaviour:

* user is at step 1
* enters data for step 1
* clicks continue and gets to step 2
* enters data for step 2
* clicks *back* and gets to step 1
* **sees the data he entered previously** (works already)
* clicks *continue* and gets to step 2
* **sees the data he entered previously** (works not yet)

To show the previously entered data after clicking *continue*, I simply set `$form[$name]['#default_value']` with values from `$form_state['values']` (with a detour via ctools object cache). So this works already.

The problem is with clicking *back*: After clicking *back*, $form\_state['values'] does **not** contain any entered values. So I don't have the values to populate `$form[$name]['#default_value']` and this is my current problem.

So I wonder: How can I send entered values with the *back* button submit?

Answer: 
To get ctools wizard to save values when the user presses the back button, you would have to remove it's '#limit\_validation\_errors' property that is set by default in ctools\_wizard\_wrapper(). There is no convenient switch or form\_info property to do this so you have to use a form alter hook similar to this:

```
function test_form_alter(&$form, &$form_state, $form_id) {
  if (isset($form_state['wrapper_callback']) && $form_state['wrapper_callback'] == 'ctools_wizard_wrapper' && $form_state['form_info']['id'] == 'test_wizard') {
    if (isset($form['buttons']['previous'])) {
      unset($form['buttons']['previous']['#limit_validation_errors']);
    }
  }
}

```
Yes this is possible, but you need a workaround due to [Back callback : overloading and call](https://www.drupal.org/node/1294744)

```
/**
 * Callback executed when the 'back' or 'next' button is clicked.
 */
function MODULE_next(&$form_state) {
  if ($form_state['clicked_button']['#value'] == t('Back')) {
    // Do whatever, but use $form_state['input'] instead of $form_state['values']
  }
  else {
    // Use $form_state['values']
  }
}

```