Drupal 7, форма не перестраивается

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

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

person pikku-h    schedule 22.12.2011    source источник


Ответы (1)


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

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

Более подробный пример см. в примере модуля в документации по API.

Пример формы

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

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

person fmitchell    schedule 18.02.2012