Никак не могу решить простую задачу:
Есть страница test c формой
Есть страница resultpage, где должны отразиться результаты расчета данных формы.
В пределах страницы test все замечательно работает и считается, редирект на resultpage проходит.
Но только оказавшись на resultpage мне недоступны все данные формы и/или результаты расчета.
Как получить доступ к данным формы, находясь на другой странице?
1. Посмотрел переменную $_POST - пусто.
2. Пробовал в обработчике формы править содержимое страницы resultpage через БД. Вносил изменения в таблицы field_data_body и field_revision_body. Но содержимое страницы почему-то оставалось старым, хотя записи в БД изменены. Чудеса! Короче этот медот не прокатил.
3. Решил вообще наладить обмен данными между страницами через свою таблицу в БД. При этом запись в нее происходит замечательно, а вот прочитать ничего не могу. Что за ерунда? Чтение делаю так:
<?php
$output = db_query("SELECT data FROM {1bufer_obmena} WHERE id = :id, array(
':id' => 1,
))->fetchField();
?>
Этот код приводит к тому, что выводится пустая страница. В общем, тоже не получилось.
Прошу помощи, как передать данные из форму на страницу, которая открывается после обработки формы?
Спасибо!
Комментарии
сессия, кэш
Пусть результат расчета формы равен 100. Перенаправьте в сабмите формы на resultpage, а там просто выведите полученный аргумент.
Как это сделать? Можно пример?
В функции submit формы добавьте
$form_state['redirect'] = 'resultpage/'. $value;
или drupal_goto()
Вы вообще мануал читали?
http://api.drupal.ru/api/file/developer/topics/forms_api.html/6
http://api.drupal.ru/api/file/developer/topics/forms_api_reference.html/6
Рекомендую еще в код модулей ядра заглянуть. Там много разных форм имеется.
Вот этот пример:
$form_state['redirect'] = 'resultpage/'. $value;
приводит на страницу http://mysyte.ru/resultpage/123 - а так как такой страницы нет, то получаю ошибку.
Изучил код модулей ядра. В form.inc нашел следующее:
<?php
* For example, to redirect to 'node':
* [user=code]code[/user]
* $form_state['redirect'] = 'node';
* [user=endcode]endcode[/user]
* Or to redirect to 'node/123?foo=bar#baz':
* [user=code]code[/user]
* $form_state['redirect'] = array(
* 'node/123',
* array(
* 'query' => array(
* 'foo' => 'bar',
* ),
* 'fragment' => 'baz',
* ),
* );
* [user=endcode]endcode[/user]
?>
Собственно это и есть решение. Спасибо за совет!
Опишите хук меню, resultpage/% - первым аргументом в его функцию будет ваше 123 из строки запроса.
Если вы модули делаете, то хотя бы мануалы почитайте. Два года назад тут перевод руководства по их созданию выкладывали.