drupal HTTP POSTデータ


7

HTTP POST / GETデータをdrupalに送信するにはどうすればよいですか?

例:私はHTMLフォームを持っています:

<form action="mydrupalcite.com" method="get">
    <input type="text" name="title" />
</form>

title'のデータをdrupalの回答モジュール(または任意のモジュール)に取り込むにはどうすればよいですか?

私はこれを行うための単調な方法を探しています

サービスモジュールとは何か関係がありますか?


私は本当にフォームを作成することを探していませんが、drupal(質問モジュールフォーム)のフォームにデータを送信します
tom91136

さて、さもなければクライブスの応答をチェックすると思った。
GoodSp33d 2012

回答:


6

DrupalのフォームAPIにはCSRF保護が組み込まれているため、外部ドメインからフォームを送信しても機能しません。CSRFの無効化を検討するか(非常に悪い考え)、または提案したように、サービスモジュールを使用できます。

サービスモジュールとサイト上のフォームの間に1対1のマッピングはなく、モジュールは外部クライアントから使用される特定のタスクのリソースを実装します。デフォルトでは、ノード、ユーザー、分類用語、そしておそらく他のものを取得します。たとえば、新しいnode / user / termを追加できますが、フォームを送信するのではなく、認証後にxml / json / etcリクエストをサーバーに送信します。

データの取得はほとんど同じ方法で機能します。サービスを使用してそれを行うか、独自の認証を管理する必要がある場合は、適切な方法についてindrockの回答を参照してください。

サービスは非常に拡張可能であるため、answersモジュールがリソースを実装していなくても、answers(またはその他の)モジュールからAPI関数をラップする独自のサービスを追加するのは非常に簡単です。

サービスドキュメントは、おそらく開始するのに適しています。


6

このパラメーターを取得するには、まずDrupalでページ(URL)を作成する必要があります。これを行うhook_menu()には、カスタムモジュールにを実装します。カスタムモジュールを作成するには、これを参照してください

function MYMODULE_menu() {
  $items['get_details'] = array (
    'title' => '',
    'page callback' => 'MYMODULE_access_variables',
    'page arguments' => array(1),
    'access callback' => TRUE,  // this will be accessible to everyone
  );
  return $items;
}

function MYMODULE_access_variables() {
 // Here you get access to the POSTED variables using $_RESPONSE php superglobal
  echo "<pre>";
  print_r ($_RESPONSE['title']);  // will get you the value of the HTML input type having name='title'
  echo "</pre>"
}

これにより、http://mydrupalsite.com/get_detailsのサイトにページが作成されます

今、あなたのHTMLから次のような呼び出しを行います

<form action="mydrupalcite.com/get_details" method="post">
    <input type="text" name="title" /> <!-- Note that the value of the attribute 'name' will be used the capture the value which is posted -->
</form>

注: @cliveの回答に従って、開発/教育目的でのみ使用することをお勧めします。これはセキュリティに影響を与える可能性があります。


1
print_rは、指定されたパラメーターをサイトに印刷します。:あなたは、Drupalがページの残りの部分(サイドバー、CSSなど)、このような使用何か追加したい場合はpastebin.com/TC1FfPY7
AyeshK

@AyeshK素敵な提案!関数内で値にアクセスできることを示すためだけに値を出力しました:)
AjitS
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.