Drupal Forms API。 パート2-Drupal 7の場合


記事の2番目の部分には、バージョン7のDrupal Forms APIに典型的な違いが含まれています。記事のこの部分は、Drupalブログ購読者だけでなく、公開トピックとして公開されています。 ただし、Drupalに興味のない人の邪魔にならないように、(トピックの作成に関する)さらなる記事をクローズドブログ記事として公開します。

前回の記事では、AJAX(Drupal 6では「AHAH」と呼ばれる)を使用して、入力された名前をフォームに返す単純なモジュールの機能について説明しました。 バージョン7の番です。



1. Drupal API 7の最も興味深い変更




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に加えられた変更のリストを以下に示します(トピックについては、個別のリスト)。

モジュール全体でアーカイブをダウンロードする

Source: https://habr.com/ru/post/J111359/


All Articles