Как создать кнопку назад в многошаговой форме?
Форма из нескольких шагов. после каждого шага в функции form_submit текущие значения сохраняются в 'storage'
$form_state['storage']['page_one_values'] = $form_state['values'];
В заключении все массивы объединяются
$form_state['values'] = array_merge($form_state['values'],$form_state['storage']['page_two_values'], $form_state['storage']['page_one_values']);
Создаю кнопку назад, но значения все стираются при возврате - как сделать так чтобы они сохранялись?
Пробовал сделать через установку default_value вытаскиванием из form_storage, но мне кажется должен быть какой то более простой способ.
Заранее спасибо
Комментарии
Вы наверное по кнопке делает шаг назад в браузере, можете сделать свою кнопку такую же как и далее, но по клику рендерить форму с предыдущим шагом доставая значения с $form_state['storage'] соответственно.
Ведь не что Вам не мешает, как формировать форму по шагам анализируя какой-то параметр, сформировать имитацию шагов назад.
P.S. Посмотрите эту статью
Я так понимаю нужно как то передать (заполнить) $form_values значениями из $form_storage, просто приравнять почему то не работает - может у меня в функциях неправильно переменные объявлены?
Получилось сделать?
У меня такая же проблема сейчас.
[##999558]Здесь[/##] нашёл вариант для 7.х, буду пробовать:
<?phpfunction form_example_tutorial_8_next_submit($form, &$form_state) {
...
// This won't actually work for any fields that have #limit_validation_errors set
// because Drupal has destroyed the $form_state values that haven't been validated.
// To make page 2 remember "color" setting after going Back, remove #limit_validation_errors
// and remove '#required' => TRUE, on the color element.
if (!empty($form_state['page_values'][2])) {
$form_state['values'] = $form_state['page_values'][2];
}
...
}
?>
Но еще есть проблема в том, что при нажатии в браузере назад - форма слетает полностью...
У меня по такому варианту восстанавливаются только значения CCK полей.
Стандартные поля, вроде заголовка ноды, описания, и выбранного терма таксономии не восстанавливаются.