HTTP POST/GETデータをdrupalに送信するにはどうすればよいですか?
例:私はHTMLフォームを持っています:
<form action="mydrupalcite.com" method="get">
<input type="text" name="title" />
</form>
title
のデータをdrupalの回答モジュール(または任意のモジュール)に取得するにはどうすればよいですか?
私はこれを行うdrupal方法を探しています(Drupalは比較的新しく、実際にどのように機能するか)
サービスモジュールとは何か関係がありますか?
DrupalのフォームAPIには [〜#〜] csrf [〜#〜] 保護が組み込まれているため、外部ドメインからフォームを送信しても機能しません。 CSRFの無効化を検討するか(非常に悪い考え)、または提案したように、サービスモジュールを使用できます。
サービスモジュールとサイト上のフォームの間には1対1のマッピングはなく、モジュールは外部クライアントから消費される特定のタスクのリソースを実装します。デフォルトでは、ノード、ユーザー、分類用語、そしておそらく他のものを取得します。たとえば、新しいnode/user/termを追加できますが、フォームを送信するのではなく、認証後にxml/json/etcリクエストをサーバーに送信します。
データの取得はほとんど同じ方法で機能します。サービスを使用してそれを行うか、独自の認証を管理できる/必要ない場合は、indrockの回答で適切な方法を確認してください。
サービスは非常に拡張可能であるため、answersモジュールがリソースを実装していなくても、answers(またはその他の)モジュールからAPI関数をラップする独自のサービスを追加するのは非常に簡単です。
サービスのドキュメント から始めるとよいでしょう。
最初に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>"
}
これにより、URLのサイトにページが作成されます 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の回答に従って、開発/教育目的でのみ使用することをお勧めします。これはセキュリティに影響を与える可能性があります。