Доступ к веб-форме 4 Отправленные данные
У меня есть веб-форма на моем сайте, и при отправке пользователем я хочу отправить данные веб-формы в какое-нибудь php-приложение, которое получает значение некоторых переменных из URL-адреса.
Эта задача требует, чтобы я получил доступ к отправленным данным веб-формы, когда пользователь нажимает кнопку "Отправить" и создает URL-адрес (/myphpapplication?запрос=....), содержащий заполненные пользователем значения веб-формы. Пожалуйста, помогите мне достичь этого.
3 answers
Как упоминал Освальд, вам необходимо внедрить некоторые крючки в свой пользовательский модуль, чтобы перенаправить отправку формы. Вот краткий пример (предположим, что ваш идентификатор form_id равен "webform_client_form_1"):
// hook_form_alter()
function customform_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'webform_client_form_1') {
// Add form_submit() handler
$form['#submit'][] = 'customform_webform_submit';
}
}
// form_submit()
function customform_webform_submit($form, &$form_state) {
// Submited values are in $form_state['values']['submitted_tree']
$field_values = customform_webform_values( $form_state['values']['submitted_tree'] );
// Build URL Query
$query = '';
foreach ($field_values as $value) {
$query .= $value . '&';
}
$redirect = array (
'myphpapplication',
array (
'query' => array (
'query' => rtrim( $query, "&" ) // Get 'query' values with $_GET['query']
)
)
);
$form_state['redirect'] = $redirect;
}
// Recurse through webfrom submited values
function customform_webform_values($component) {
static $webform;
foreach($component as $key => $value) {
if (is_array($value)) {
customform_webform_values($value);
}
else {
$webform[$key] = $value;
}
}
return $webform;
}
Реализуйте hook_form_alter() или один из его родственников, добавив обработчик отправки в форму (т.Е. в $form['#отправить']).
Чтобы узнать правильное значение параметра $form_id
, ваша первая реализация hook_form_alter()
может просто drupal_set_message() этого параметра. Используйте тот же метод, чтобы узнать, как ваш обработчик отправки получает значения формы в $form_state['values']
.
Я опаздываю с ответом, но, возможно, это может кому-то помочь
Данные веб-формы 4 также могут быть доступны с помощью крючков веб-формы, как в следующем коде.
function mymodule_webform_submission_insert($node, $submission) {
if ($node->nid == 1) {
$submitted_data = $submission->data;
print_r( $submitted_data); // This will give you all the submitted value in a form of array which you can use according to your requirements.
}
}
Вы можете реализовать это в пользовательском модуле: Не забудьте заменить mymodule именем вашего модуля.