SO と Drupal Form API へようこそ (FAPI と呼ぶのはいいことですが、インターネットのミームはご存知でしょう)。まず、このフォームを機能させるために必要な Drupal のバージョンと、これをどこに表示する必要があるかをお知らせください。
優れたスタートアップ チュートリアルについては、http://drupal.org/node/751826を参照してください。Drupal 6 用であることを忘れないでください。
特定のページ (たとえば /myform) でフォームを表示したい場合は、hook_menu() でパスを登録する必要があります。次に、コールバック関数として drupal_get_form がある限り、フォームを印刷/エコーする必要はありません。
フォームを作成する最も簡単な方法は、PHP コードをブロックに入れることです (これが簡単だとは誰も言いません - 私の考えです) 。フォームを作成するのに引数は必要ありません。
function test_myform(){
$form['description'] = array(
'#type' => 'item',
'#title' => t('A form with nothing but a textfield'),
);
// This is the first form element. It's a textfield with a label, "Name"
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('Name'),
);
return $form;
}
これで、test_myform() から呼び出すことができるフォーム配列ができました。かっこいいでしょ?
これを使用してフォームを表示します。
return drupal_get_form('my_form');
次に、これが既に試したのと同じコードであることがわかります。そこで役立つのがこのバージョンです。これは D6 では機能しますが、D7 では機能しなくなりました。これを試してください:
return drupal_render(drupal_get_form('my_form'));
見る ?
このコードは php ブロックで使用されることに注意してください。php フィルター モジュールを有効にすることはお勧めしませんが、フォームを取得するには有効にする必要があります。
最良の方法は、独自のブロックまたはメニュー コールバックを定義してフォームを取得することです。パスの登録方法については、http://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_menu/7を参照してください。test_myform()
ここで、コードとして引数を受け入れる関数を作成する必要があることに注意してください。ページ コールバックは drupal_get_form である必要があり、drupal_render()
表示されるフォームを取得する必要はありません。