Webform
Drupal向けの包括的なフォームビルダーおよび送信管理モジュールで、豊富なカスタマイズオプションを備えたウェブフォームやアンケートの作成を可能にします。
webform
インストール
composer require 'drupal/webform:^6.2'
概要
WebformモジュールはDrupal 10/11向けの強力なフォームビルダーおよび送信管理ツールです。エンタープライズ向け商用フォームビルダーに期待されるすべての機能と、Drupalの柔軟性とオープン性を兼ね備えています。
このモジュールの主な用途は、新しいウェブフォームの作成または既存テンプレートの複製、ページ・ノード・ブロックとしてのウェブフォーム公開、送信データの収集、確認・通知メールの送信、オンラインでの送信確認、CSVでの送信データダウンロードです。
このモジュールはDrupalのForm API上に直接構築されており、Drupalで利用可能なすべてのフォーム要素をサポートしています。80種類以上のフォーム要素タイプ、条件分岐ロジック、マルチステップウィザードフォーム、メール通知、リモートPOSTハンドラー、ファイルアップロード、署名キャプチャ、包括的な送信管理機能を提供します。
DrupalとWebformモジュールは、スクリーンリーダーやキーボードアクセスを含む支援技術を完全にサポートし、すべてのユーザーとサイトビルダーに対して完全なアクセシビリティを提供することを目指しています。
Features
- フォーム要素の作成・管理のための直感的なUIを備えたドラッグ&ドロップフォームビルダー
- 基本HTML、高度なHTML5、ファイルアップロード、複合要素、カスタムウィジェットを含む80種類以上のフォーム要素タイプ
- カスタマイズ可能なプログレスバーと下書き保存機能を備えたマルチステップウィザードフォーム
- DrupalのStates APIを使用した表示/非表示、必須/任意、有効/無効の条件分岐ロジック
- ファイル添付とカスタマイズ可能なテンプレートを使用したHTMLメール送信用のEmailハンドラー
- 外部APIやサービスへの送信データ送信用のリモートPOSTハンドラー
- 表示、編集、エクスポート、削除を含む包括的な送信管理
- CSV、JSON、YAML、HTMLテーブル形式への送信データエクスポート
- セレクトメニュー、チェックボックス、ラジオボタン用の再利用可能な定義済みオプション
- フォーム作成、送信閲覧、管理のためのアクセス制御と権限
- メッセージ、メール、確認画面での動的コンテンツ用Tokenサポート
- ウェブフォームごとのカスタムCSSとJavaScript
- ページリロードなしのフォーム送信用Ajaxサポート
- 開始/終了日によるフォームスケジュール設定
- ユーザーごとまたは総送信数の制限
- 下書き保存と前回送信からの自動入力
- フォーム埋め込み用のBlockおよびNode統合
- フォーム外観カスタマイズ用の豊富なテンプレートシステム
- 自動化とバッチ操作用のDrushコマンド
- 完全な国際化と翻訳サポート
Use Cases
お問い合わせフォーム
名前、メール、件名、メッセージフィールドを持つ基本的なお問い合わせフォームを作成します。サイト管理者への通知と送信者への確認メールを送信するEmailハンドラーを設定します。
アンケート/質問票
リッカート尺度、評価要素、条件分岐ロジックを含むマルチページアンケートを構築します。送信前のプレビュー機能を使用し、結果をCSVにエクスポートして分析します。
求人応募フォーム
履歴書とカバーレターのファイルアップロードを含む包括的な求人応募フォームを作成します。連絡先情報には複合要素を、職種選択にはエンティティ参照を使用します。
イベント登録
イベントごとの送信制限付きイベント登録フォームを構築します。webform_nodeモジュールを使用してイベントコンテンツタイプにフォームを添付し、登録を追跡します。
マルチステップウィザードフォーム
ウィザードページを使用して論理的なステップに分割された複雑なフォームを作成します。下書き保存を有効にして、ユーザーが複数のセッションにわたってフォームを完成できるようにします。
CRM統合
リモートPOSTハンドラーを使用して、SalesforceやHubSpotなどの外部CRMシステムにフォームデータを送信します。フォームフィールドをAPIパラメータにマッピングします。
フィードバック収集
ブロックを使用してサイト全体にフィードバックフォームを埋め込みます。条件分岐ロジックを使用して、ユーザーの回答に基づいて異なる質問を表示します。
注文/リクエストフォーム
合計計算用の計算フィールド、契約用の署名キャプチャ、補足書類用のファイル添付を含むフォームを作成します。
Tips
- 任意のウェブフォームの「テスト」タブを使用して、サンプルデータでテスト送信を素早く生成できます
- 詳細設定で「Details save」を有効にすると、設定セクションの開閉状態を記憶します
- 要素のラベル、説明、プロパティの一括更新にはYAMLソース編集を使用してください
- 既存のウェブフォームまたはテンプレートを複製して、類似のフォームを素早く作成できます
- デフォルトのハンドラー設定をグローバルに設定して、フォームごとの設定を削減します
- Twigを使用した計算要素で他のフォーム入力に基づいて値を計算できます
- ページリロードなしのスムーズなユーザー体験のためにAjax送信を有効にしてください
- ウェブフォームブロックを使用してサイドバーや他のリージョンにフォームを埋め込めます
- よく使用するselect/checkboxオプション用に再利用可能なオプションセットを作成してください
- 条件分岐ロジックを使用してユーザー入力に応じて変化する動的フォームを作成できます
- フォームアクティビティの詳細な監査証跡のために送信ログ記録を有効にしてください
- リモートPOSTハンドラーを使用して外部APIやサービスと統合できます
- 高度なカスタム送信レポートのためにViews統合を設定してください
Technical Details
Admin Pages 14
/admin/structure/webform
すべてのウェブフォームを一覧表示し、作成、編集、削除、送信管理のオプションを提供するメインのウェブフォーム管理ページです。
/admin/structure/webform/config
ページ設定、フォームの動作、表示オプションを含むすべてのウェブフォームのデフォルト設定を構成します。
/admin/structure/webform/config/elements
許可されるタグ、CSSクラス、デフォルトの動作を含むフォーム要素のデフォルト設定を構成します。
/admin/structure/webform/config/submissions
送信処理、制限、下書き、削除のデフォルト設定を構成します。
/admin/structure/webform/config/handlers
メールのデフォルト設定を構成し、フォームビルダーで利用可能なハンドラーを管理します。
/admin/structure/webform/config/exporters
送信データダウンロードのデフォルトエクスポート設定を構成します。
/admin/structure/webform/config/libraries
Webformモジュールで使用される外部JavaScriptおよびCSSライブラリを管理します。
/admin/structure/webform/config/advanced
UIオプション、バッチ処理、要件チェックを含む詳細設定を構成します。
/admin/structure/webform/options/manage
セレクトメニュー、チェックボックス、ラジオボタン用の再利用可能な定義済みオプションを管理します。
/admin/structure/webform/submissions/manage
すべてのウェブフォームの送信を一覧表示し管理します。
/admin/structure/webform/help
Webformモジュールのヘルプドキュメント、ビデオ、リソースにアクセスします。
/admin/reports/webform-plugins/elements
利用可能なすべてのウェブフォーム要素プラグインとそのプロパティ、設定を表示します。
/admin/reports/webform-plugins/handlers
送信処理用の利用可能なすべてのウェブフォームハンドラープラグインを表示します。
/admin/reports/webform-plugins/exporters
送信ダウンロード用の利用可能なすべてのウェブフォームエクスポータープラグインを表示します。
権限 24
Hooks 24
hook_webform_element_info_alter
WebformElementアノテーションで提供される情報を変更します。
hook_webform_handler_info_alter
WebformHandlerアノテーションで提供される情報を変更します。
hook_webform_variant_info_alter
WebformVariantアノテーションで提供される情報を変更します。
hook_webform_element_default_properties_alter
ウェブフォーム要素のデフォルトプロパティを変更します。
hook_webform_element_translatable_properties_alter
ウェブフォーム要素の翻訳可能なプロパティを変更します。
hook_webform_element_configuration_form_alter
フォームビルダーの要素設定フォームを変更します。
hook_webform_element_alter
フォームレンダリング中にウェブフォーム要素を変更します。
hook_webform_element_ELEMENT_TYPE_alter
フォームレンダリング中に特定タイプのウェブフォーム要素を変更します。
hook_webform_element_access
要素の#accessプロパティをチェックして設定します。
hook_webform_options_alter
ウェブフォームオプションを変更します。
hook_webform_options_WEBFORM_OPTIONS_ID_alter
オプションIDによってウェブフォームオプションを変更します。
hook_webform_submission_form_alter
レンダリング前にウェブフォーム送信フォームを変更します。
hook_webform_admin_third_party_settings_form_alter
ウェブフォーム管理サードパーティ設定フォームを変更します。
hook_webform_third_party_settings_form_alter
ウェブフォームサードパーティ設定フォームを変更します。
hook_webform_handler_invoke_alter
メソッドが呼び出された時にウェブフォームハンドラーに対してアクションを実行します。
hook_webform_submissions_pre_purge
ウェブフォーム送信が削除される前に応答します。
hook_webform_submissions_post_purge
ウェブフォーム送信が削除された後に応答します。
hook_webform_access_rules
ウェブフォーム用の追加アクセスルールを提供します。
hook_webform_access_rules_alter
ウェブフォームのアクセスルールリストを変更します。
hook_webform_libraries_info
外部ウェブフォームライブラリに関する情報を返します。
hook_webform_libraries_info_alter
Webformモジュールのライブラリ情報を変更します。
hook_webform_help_info
モジュールから追加のウェブフォームヘルプを収集します。
hook_webform_element_input_masks
テキスト要素の入力マスクに関する情報を返します。
hook_webform_submission_query_access_alter
ウェブフォーム送信クエリのアクセスを変更します。
Drush Commands 13
drush webform:export [webform_id]
ウェブフォーム送信をファイルにエクスポート
drush webform:import [webform_id] [file]
CSVファイルからウェブフォーム送信をインポート
drush webform:purge [webform_id]
ウェブフォーム送信を削除
drush webform:generate [webform_id]
ウェブフォームのテスト送信を生成
drush webform:tidy [module]
ウェブフォームYAML設定ファイルを整理
drush webform:libraries:status
ウェブフォームに必要なサードパーティライブラリのステータスを表示
drush webform:libraries:download
ウェブフォームに必要なサードパーティライブラリをダウンロード
drush webform:libraries:remove
ダウンロードしたサードパーティライブラリを削除
drush webform:libraries:composer
ウェブフォームライブラリ用のcomposer.jsonを生成
drush webform:repair
ウェブフォームの設定を修復
drush webform:remove:orphans
ウェブフォームが削除された孤立した送信を削除
drush webform:composer:update
ライブラリバージョンでウェブフォームのcomposer.jsonを更新
drush webform:docs
ウェブフォーム用のHTMLドキュメントを生成
Troubleshooting 8
要素キーがユニークで予約語と競合していないことを確認してください。drush webform:repairを実行して設定の問題を修正します。
Emailハンドラーの設定を確認し、デフォルトの送信元アドレスをチェックし、メールシステムが正しく設定されていることを確認してください。ハンドラー設定でメールデバッグを有効にしてください。
ブラウザコンソールでJavaScriptエラーを確認してください。フォーム設定でAjaxが有効になっていること、競合するJavaScriptライブラリがないことを確認してください。
ウェブフォーム要素設定とPHP設定でファイルサイズ制限を確認してください。アップロードディレクトリに適切な書き込み権限があることを確認してください。
state条件が正しく設定されていることを確認してください。一部のstateはすべての要素タイプで動作しない場合があります。ブラウザキャッシュをクリアしてテストしてください。
drush webform:libraries:downloadを実行して必要なライブラリをインストールするか、設定でCDN使用を有効にしてください。
フォーム設定で送信ストレージが有効になっていることを確認してください。ユーザーに送信を表示する権限があることを確認してください。
Tokenモジュールがインストールされていることを確認してください。Token構文と、Tokenが現在のコンテキストで利用可能であることを確認してください。
Security Notes 10
- 「ウェブフォームを管理」権限はグローバル設定へのアクセスを提供するため、信頼できる管理者にのみ付与してください
- 「ウェブフォームソースコードを編集」権限によりユーザーがrender arrayを変更できるため、制限する必要があります
- 「ウェブフォームTwigを編集」権限はTwig関数へのアクセスを提供するため、信頼できるユーザーにのみ付与してください
- 「CSS/JSアセットを編集」権限はカスタムコードインジェクションを許可するため、制限する必要があります
- ファイルアップロード要素は適切なファイルタイプ制限とサイズ制限で設定する必要があります
- 公開フォームではCAPTCHAまたは他のスパム対策を有効にしてください
- 認証済みユーザーのみにアクセスを制限するには、機密フォーム設定を使用してください
- プライバシーに敏感なフォームではIPトラッキングの無効化を検討してください
- ハンドラー設定を確認して、機密データがメールやリモートPOSTで公開されていないことを確認してください
- 個別のウェブフォームのアクセス制御を使用して、送信の表示、編集、削除ができるユーザーを制限してください