なぜ「drupalフォーム」を使うのか 「HTMLフォーム」でなんでもできるのに?
2 に答える
Drupal フォーム API は、Drupal サイトでフォームを表示、検証、および送信するための標準化された方法を提供します。必要に応じて、他のモジュールが設計したフォームと対話し、フィールドを変更または追加してフォームの動作を変更できるようにします。
フォーム API を使用すると、クラスと ID で完全にラップされたフォームを出力できます。このフォームは、サイトのグラフィック デザインに合わせてテーマでスタイル設定できます。
フォーム API は安全なフォームを出力します。つまり、ユーザーが送信するフォームがサイトによって生成されたものであり、悪意のあるデータをデータベースに送り込むように設計された偽のページの一部ではないことを確認します。検証プロセスにより、プログラマーはデータをサニタイズして、SQL インジェクションやその他のセキュリティに対する潜在的な脅威を回避できます。また、複数のユーザーが同じコンテンツを同時に変更することを回避する方法も提供します。
また、構造化された配列としてフォームを作成すると、フォームの設計と保守がより簡単になると思います。
これらは、フォーム API の使用に関する個人的なハイライトにすぎません。詳細については、Drupal フォーム API ドキュメントのこのリンクを参照してください。
パマットの答えはよく書かれていますが、あなたの質問はあまり建設的/決定的ではないので、いくつかの欠けている点を追加しようとしています.
なぜ「drupalフォーム」を使うのか 「HTMLフォーム」でなんでもできるのに?
「Drupalフォーム」というものはありません。それらはまだ同じ<input>
、<select>
などのタグを使用しており、すべてが HTML のままです。ただし、モジュールには、HTML を台無しにすることなくフォームを変更する機会が与えられます。
以下は通常の Drupal フォームです。
$form['text'] = array(
'#type' => 'textfield',
'#maxlength' => 120,
'#title' => t('Name'),
);
これは単なる PHP 配列であり、maxlength を変更したい場合は簡単に変更できます。もしそうなら<input name="text" maxlength="120" />
?特定のモジュールがそれを変更したい場合は、ある種の正規表現を使用してそれを行う必要があります。
また、Drupal Form API によって生成されたフォームには、*追加**の検証機能と送信機能を含めることができます。
**追加:* 上記の例のように、テキストの長さが 120 文字以下であることを検証する必要はありません。誰かが HTML を編集してこのフィールドに 200 文字を送信できますが、フォーム API はそれを拒否できます。フォーム API は、必須フィールドが入力されていること、最大長を超えていないこと、リクエストが CSRF セーフであること、選択リストの値が実際に許可リストに含まれていることなどの基本的な検証を実行できます。
生の HTML フォームを使用する必要があると主張する場合は、独自のフォーム トークン、キャッシュ、データ バリデータなどを追加する必要があります。完了したら、それが既に完了しており、「フォーム API」という名前が付けられていることがわかります。