Вы здесь

Передача параметров запроса между узлами

Здравствуйте !
В документе node/4 нужно отобразить результат выполнения хранимой процедуры. Её параметры - пара дат. Я вижу два пути передачи данных:
1. вставить в node/4 html код

<form action="XXX" mehhod=post>
<input type=...><BR>
<input type=...><BR>
</form>

2. использовать модуль webform

Для 2-го случая в настройках webform укажем node/4 для перехода после submit, но непонятно, как получить получить в node/4 значения введённых параметров. А для 1-го случая - что указывать в action="XXX" ?

Комментарии

Изображение пользователя Комментатор

Не могу заставить работать webform. На drupal.org пишут, что никаких проблем: установить галку [redirect POST] в настройках узла 'Опросник' (так называются документы webform) и получить на целевом узле введённые данные с помощью кода:
$value = $form_values['submitted']['1184556715'];
Ничего подобного. Пробовал вместо cid использовать имя:
$value = $form_values['submitted']['textfield_1184556715'];
тоже пусто. При этом,
count($_POST);
и
count($form_values);
возвращают 0.
Похоже, это any bug module webform. Или это - слишком сильное заявление ?

Изображение пользователя drupal.org.ru

Я не знаю

Изображение пользователя Комментатор

Черновое решение. Тот, кто знает PHP, будет смеяться. Решил передавать введённые параметры через $_SESSION.
1. В текст модуля webform.module добавил функцию
function _webform_client_form_submit_temp($node, $fieldset, &$form) {
if (is_array($fieldset)) {
foreach ($fieldset as $form_key => $value) {
$cid = webform_get_cid($node, $form_key);
if (is_array($value) && $node->webformcomponents[$cid]['type'] == 'fieldset') {
_webform_client_form_submit_temp($node, $value, $form);
$_SESSION['webform_form_'.$node->nid][$cid] = $value;
}
else {
$_SESSION['webform_form_'.$node->nid][$cid] = $value;
}
}
}
}
Она вызывается 1 раз в function webform_client_form_submit перед последним блоком [if]:
// Check confirmation field to see if redirect should be to another node or a message
if (valid_url(trim($node->confirmation), true)) {
...
}
2. Для обновления данных сессии в тексте модуля webform.module в hook function webform_view добавил строку:
unset($_SESSION['webform_form_'.$node->nid]);
Теперь на целевом узле введённые данные доступны как $_SESSION['webform_form_13']; 13 - это idNode документа webform
3. используется Apache/2.2.4 (Win32) PHP/5.2.0, в php.ini:
register_globals = Off
session.use_cookies = 1. Это установки по умолчанию, я их не менял.
Всё таки дело, наверное, в настройках PHP.
?