Drupal 7, форма не будет восстановлена - PullRequest
2 голосов
/ 22 декабря 2011

Я создаю многошаговую форму и не хочу, чтобы пользователи теряли сохраненную информацию, если они случайно обновят страницу.Шаги для воспроизведения:

1) Press 'ok'-button
2) var_dump($form_state['multistep']['step']) == 2
3) Refresh page
4) var_dump($form_state['multistep']['step']) still == 2
5) Press 'ok'-button
6) var_dump($form_state['multistep']['step']) == 3
7) Refresh page
8) var_dump($form_state['multistep']['step']) == 2 rather than 3

Должна быть какая-то проблема механики форм Drupal, о которой я не знаю.Кто-нибудь может объяснить, почему это происходит?Пример кода ниже.

function multistep_test_form($form, &$form_state) {
    if( !isset($form_state['multistep']['step']) ) {
        $form_state['multistep']['step'] = 1;
    } else {
        var_dump($form_state['multistep']['step']);
    }

    $form['submit'] = array(
        '#type' => 'submit',
        '#value' => 'ok'
    );

    return $form;
}

function multistep_test_form_submit($form, &$form_state) {
    $form_state['rebuild'] = TRUE;
    $form_state['multistep']['step']++;
}

1 Ответ

1 голос
/ 18 февраля 2012

Значения хранятся в $ form_state ['page_values'].

$form_state['page_values'][1] = $form_state['values'];

Проверьте пример модуля в документации API для более подробного примера.

Пример формы

Пример обработчика отправки формы для переноса значений

Проверка значений (при необходимости)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...