[РЕШЕНО] Передача данных после обработки формы

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

Аватар пользователя simen simen 8 июля 2011 в 18:01

Никак не могу решить простую задачу:
Есть страница 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();
?>

Этот код приводит к тому, что выводится пустая страница. В общем, тоже не получилось.

Прошу помощи, как передать данные из форму на страницу, которая открывается после обработки формы?
Спасибо!

Комментарии

Аватар пользователя direqtor direqtor 9 июля 2011 в 4:30

Пусть результат расчета формы равен 100. Перенаправьте в сабмите формы на resultpage, а там просто выведите полученный аргумент.

Аватар пользователя simen simen 9 июля 2011 в 8:05

"direqtor" wrote:
Пусть результат расчета формы равен 100. Перенаправьте в сабмите формы на resultpage, а там просто выведите полученный аргумент.

Как это сделать? Можно пример?

Аватар пользователя direqtor direqtor 9 июля 2011 в 8:35

В функции 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

Рекомендую еще в код модулей ядра заглянуть. Там много разных форм имеется.

Аватар пользователя simen simen 9 июля 2011 в 20:15

Вот этот пример:
$form_state['redirect'] = 'resultpage/'. $value;
приводит на страницу http://mysyte.ru/resultpage/123 - а так как такой страницы нет, то получаю ошибку.

Изучил код модулей ядра. В form.inc нашел следующее:

<?php
 
* For exampleto 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]
?>

Собственно это и есть решение. Спасибо за совет!

Аватар пользователя direqtor direqtor 10 июля 2011 в 4:41

"simen" wrote:
приводит на страницу http://mysyte.ru/resultpage/123 - а так как такой страницы нет, то получаю ошибку.
Ну так сделайте, чтоб была.

Опишите хук меню, resultpage/% - первым аргументом в его функцию будет ваше 123 из строки запроса.
Если вы модули делаете, то хотя бы мануалы почитайте. Два года назад тут перевод руководства по их созданию выкладывали.