Drupal: простая форма пересылки данных на другой сервер - PullRequest
1 голос
/ 16 февраля 2011

Мне нужно добавить страницу с формой на моем сайте Drupal.Эта форма должна быть отправлена ​​на другой сервер (есть скрипт php, готовый принять его на таком сервере).

Итак, мне не нужно обновлять базу данных, просто страница, на которой перенаправляются данные, вставленные пользователямидругой домен.

Знаете ли вы, какой самый простой способ сделать это?

спасибо

пс.Также мне нужно создать выпадающее меню со списком стран (и регионов для каждой страны) в виде подменю

Ответы [ 4 ]

3 голосов
/ 16 февраля 2011

Я удивлен, что никто не упомянул hook_form_alter и установил #action для внешнего URL.После этого форма будет отправлена ​​непосредственно на другой сервер, и если у вас есть контроль над ней, вы можете легко перенаправить ее обратно.Намного проще, чем POSTing с вашего сервера.Другим способом будет iframe другой скрипт и использование целевого атрибута (установите $form['#attributes']['target'] = 'the_iframe' в hook_form_alter).Затем вы можете использовать JS, чтобы «переместить» страницу после отправки.Загрузите POSTs в iframe, вы также можете посмотреть на этот JS. Как вы публикуете в iframe? обсуждает iframe и формы.

1 голос
/ 16 февраля 2011

В вашей форме вы можете установить #action на любой URL, который вы хотите.Он будет публиковать по этому адресу.Если вам нужен GET вместо POST, вам также следует установить #method.

function my_form_builder() {
  $form['search'] = array(
    //..builds some form elements
  );

  $form[#action] = 'http://example.com';

  return $form;

}

0 голосов
/ 16 февраля 2011

Чтобы отправить POST на внешний URL-адрес в собственной пользовательской реализации формы или с помощью hook_form_alter (), чтобы добавить другой обработчик отправки в существующую форму, при этом не показывая запрос, вы захотите использовать drupal_http_request () для отправки http-запроса на сервер.См. Это:

http://www.drupaler.co.uk/blog/validating-submitting-forms-other-websites-drupal/428

Для этого с помощью модуля веб-формы вам понадобится то, что вы узнали выше, и что-то вроде следующего:

  1. В D6 / Webform <3 </p>

    http://drupal.org/node/543674#comment-2499674

  2. В Drupal 7 / Webform 3

    http://www.midwesternmac.com/blogs/jeff-geerling/integrate-webform-3x-paypal

0 голосов
/ 16 февраля 2011

Вы можете создать обычную форму друпала с использованием обычного средства проверки и вместо того, чтобы поместить дату в БД, отправить ее на другой сайт (по почте, получить или как угодно).

...