Временное сохранение массива на стороне сервера для формы с 2-я ajax сабмитами

Главные вкладки

Аватар пользователя stillfinder stillfinder 6 сентября 2013 в 11:14

Вопрос состоит в следующем: в своем модуле есть форма с 2-я сабмитами, которые работают по аяксу. Нужно чтобы при нажатии первого сабмита, на стороне сервера происходило сохранение массива с числами, который будет доступен при нажатии на второй сабмит. Ищу наиболее правильный вариант реализации, возможно не совсем правильная формулировка "сохранение на стороне сервера", но думаю суть все поняли. Теперь код:

Сама форма

<?phpfunction bublesort_form($form, &$form_state) {
    $form=array();
    
    $form['result'] = array(
        '#title' => 'Result',
        '#description' => 'decs.',
        '#prefix' => '<div id="canvas_result_div">', 
        '#suffix' => '</div>', 
    );
    
    $form['shuffle'] = array(
        '#type' => 'submit',
        '#value' => t('Shuffle'),
        '#name' => 'shuffle',
        '#ajax' => array(
            'callback' => 'shuffle_ajax_submit',
            'wrapper' => 'canvas_result_div',
        ),
    );
    
    $form['step'] = array(
        '#type' => 'submit',
        '#value' => t('Step'),
        '#name' => 'step',        
        '#ajax' => array(
            'callback' => 'step_ajax_submit',
            'wrapper' => 'canvas_result_div',
        ),
    );
    
    return $form;
}?>

Первый submit

<?phpfunction shuffle_ajax_submit($form, &$form_state) {
    $numbers = rand_range(0,100,10); // массив который нужно сохранить
    $result = numbers_list_to_html($numbers);
    return '<div id="canvas_result_div">'.$result.'</div>';
}?>

Второй submit

<?phpfunction step_ajax_submit($form, &$form_state) {
        // здесь нужно получить значения массива $numbers из первого сабмита
        // $numbers = ???
    return '<div id="canvas_result_div">'.$result.'</div>';
}?>

Спасибо всем за ответы

Комментарии

Аватар пользователя noneart noneart 6 сентября 2013 в 12:12

тоже ищу ответ на этот вопрос. пока что использую временное решение - сессии

<?php
$_SESSION
["first_step_numbers"] = $numbers;
?>

а вот тут наверное можно найти наиболее правильное решение:
http://www.jaypan.com/tutorial/drupal-7-ajax-driven-multi-step-forms-non...
http://drupalace.ru/lesson/mnogoshagovye-multistep-formy-na-ajax-v-drupal-7
http://internetdevels.ru/blog/ctools-multistep-wizard-example