今回は前回「Drupal7:モジュールの作り方「Hello World」」で作成したHello Worldモジュールに「フォーム」の機能を加えてみたいと思います。
「Webサイトからお問い合わせが来ない…」とお悩みの方必見!
当サイトのノウハウを詰め込んだ『Web集客の無料ガイド』をご提供
手順
- 「mymodule.module」ファイルを開きます
- 以下のソースを「mymodule_menu() 」ファンクションのitemsの配列に挿入します
$items['form_test'] = array( 'title' => '簡単なフォームのテスト', 'page callback' => 'my_add_testform_callback', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, );
- 次のファンクションを追加します
function my_add_testform_callback() { return drupal_get_form('mymodule_add_testform_form'); }
- 下記のフォーム用ファンクションを追加します。 ※Drupal7 Form API Reference
function mymodule_add_testform_form($form, &$form_state) { $form = array ( '#action' => '#', 'number' => array ( '#type' => 'textfield', '#title' => t('テストフィールド'), '#description' => t('テストフィールド説明'), '#required' => TRUE, ), 'submit' => array ( //We define a simple submit button '#type' => 'submit', '#value' => t('テスト送信'), ), ); return $form; }
- バリデーションコードと、Formのサブミット後のコードを以下に記述します
function mymodule_add_testform_form_validate($form, &$form_state){ if(strlen($form_state['values']['number']) > 10) { form_set_error('', t('Hey, your name is too long!')); } } function mymodule_add_testform_form_submit($form, &$form_state) { //My success processing drupal_set_message(t('Yay, your input number is '. $form_state['values']['number'])); }
結果
「form_test」にアクセスし、作成したフォームが正しく動作するか確認ください
ヒント
Drupalのモジュールファイルを更新した場合、キャッシュクリアとメニュー情報を更新する必要があります。
Develモジュールをインストールすることで、メニューから簡単に更新することが可能です。
関連記事
Drupal7:モジュールの作り方「Hello World」