
記事の2番目の部分には、バージョン7のDrupal Forms APIに典型的な違いが含まれています。記事のこの部分は、Drupalブログ購読者だけでなく、公開トピックとして公開されています。 ただし、Drupalに興味のない人の邪魔にならないように、(トピックの作成に関する)さらなる記事をクローズドブログ記事として公開します。
前回の記事では、AJAX(Drupal 6では「AHAH」と呼ばれる)を使用して、入力された名前をフォームに返す単純なモジュールの機能について説明しました。 バージョン7の番です。
1. Drupal API 7の最も興味深い変更
- Drupal 7では、 情報ファイルが変更されました。 ここで、モジュールに含まれるphpコードを持つすべてのファイル( incおよびtestファイル)をinfofileとして宣言する必要があります。 私たちの場合、何もありません。
- AJAXの処理方法が変更されました。 これで、 hook_menuを介して処理するパスを指定する必要がなくなりました 。コールバック関数をすぐに指定できます。
- 要求処理パスはsystemic- / system / ajaxになりました 。
- フォーム処理が変更されました。 これで、コールバック関数は2つの変数を受け取ります-フォームの配列とフォームの状態へのポインター。
2.フォームコードの変更
フォームコードの変更はわずかです。 Drupal Forms APIの原則は変わりません。
/* FC Form */ // ( , , ) function fc_form($form, &$form_state) { $form = array(); $form['name'] = array( '#type' => 'textfield', '#description' => 'Your name', '#size' => '15', ); $form['submit'] = array( '#type' => 'submit', '#value' => 'Submit', // ajax '#ajax' => array( // callback- 'callback' => 'fastcontact_ajax', 'wrapper' => 'fc-form', ), ); return $form; }
2.リクエスト処理コードの変更
// callback- . function fastcontact_ajax($form, &$form_state) { // name values form_state $name=$form_state['values']['name']; // markup . $form['result'] = array( '#markup' => ' <b>'.$name.'</b>', ); return $form; }
$ form_state配列の値は非常に大きいです。 フォームとその条件に関するすべてのデータを保存します 。 そこからフィールド名の値を取得します。
Drupal 6でdrupal_json()経由で成功した場合に表示されるテキストを送信した場合、Drupal 7でフォームを再構築し、それにマークアップ要素を追加します。 マークアップは、HTMLマークアップをフォームに出力するために使用されます。 この要素は、Drupalのバージョン6にも存在していましたが、バージョン7 では構文が変更されました 。
これで、フォームを表示することができます。 これを前回の記事の標準コードにすることができます。
function render_fc_form() { $out = '<div id="fc-form-wrapper">'; $out .= drupal_render(drupal_get_form('fc_form')); $out .= '</div><!-- /.fc-form-->'; return $out; }
Drupal 7にはさらに多くのAPIの変更があることに注意してください。 モジュールの作成に関して、バージョン6以降のDrupal APIに加えられた変更のリストを以下に示します(トピックについては、個別のリスト)。
モジュール全体でアーカイブをダウンロードする