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']);
    }
  }
}

```
As far as I am aware there is not a built in way to achieve this within cTools with the wizard code you are probably playing with (the sub modules that came with cTools inside its plugins folder).

You'll have to use session storage on the server side or localstorage on the client side (javascript) to have the values saved in the manner you describe.

For instant results, install [Multi-step forms](https://drupal.org/project/mforms) module and browse to <http://your-install.com/mforms/example/session> to see a working example of what you describe. The corresponding code is inside of Multi-step forms, which is made for developers to utilize.