Webform

Drupal向けの包括的なフォームビルダーおよび送信管理モジュールで、豊富なカスタマイズオプションを備えたウェブフォームやアンケートの作成を可能にします。

webform
342,228 sites
431
drupal.org

インストール

Drupal 10 v6.2.9
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
ウェブフォームを管理

グローバルYAML設定とオプションの管理を許可します。アクセス制限あり。

ウェブフォーム送信を管理

すべてのウェブフォーム送信へのアクセス、更新、削除を許可します。セキュリティ上の影響があるためアクセス制限あり。

ウェブフォーム要素アクセスを管理

特定のロールとユーザーへのウェブフォーム要素アクセスを制限します。

ウェブフォーム概要を管理

概要ページでウェブフォームをフィルターし、一括操作を実行します。

ウェブフォーム概要ページにアクセス

すべてのウェブフォームの概要を取得します。

ウェブフォームヘルプページにアクセス

ユーザーがWebformモジュールのヘルプページを表示することを許可します。

ウェブフォームユーザー送信ページにアクセス

ユーザーがプロフィールページの「送信」タブから自分の送信を表示することを許可します。

ウェブフォームを作成

新しいウェブフォームの作成を許可します。

任意のウェブフォームを編集

任意のウェブフォームとその結果の管理を許可します。アクセス制限あり。

自分のウェブフォームを編集

ユーザーが作成したウェブフォームとその結果の管理を許可します。

任意のウェブフォームを削除

任意のウェブフォームの削除を許可します。アクセス制限あり。

自分のウェブフォームを削除

ユーザーが作成したウェブフォームの削除を許可します。

ウェブフォームソースコードを編集

ウェブフォームソースコードの編集により、ユーザーがウェブフォームのrender arrayを変更・破損する可能性があります。アクセス制限あり。

ウェブフォームTwigテンプレートを編集

インラインTwigテンプレートの編集により、ユーザーがTwig関数で公開されたデータにアクセスできます。アクセス制限あり。

CSS/JSウェブフォームアセットを編集

管理者がウェブフォームにカスタムCSSとJavaScriptを添付することを許可します。アクセス制限あり。

ウェブフォームバリアントを編集

管理者がウェブフォームのバリエーションを作成することを許可します。アクセス制限あり。

自分のウェブフォーム設定にアクセス

ユーザーとアプリケーションがユーザーが作成したウェブフォームの設定にアクセスすることを許可します。

任意のウェブフォーム設定にアクセス

ユーザーとアプリケーションが任意のウェブフォームの設定にアクセスすることを許可します。

任意のウェブフォーム送信を表示

すべての送信の表示を許可します。

自分のウェブフォーム送信を表示

すべてのウェブフォームで自分の送信を表示することを許可します。

任意のウェブフォーム送信を編集

すべての送信の更新を許可します。

自分のウェブフォーム送信を編集

すべてのウェブフォームで自分の送信を更新することを許可します。

任意のウェブフォーム送信を削除

すべての送信の削除を許可します。

自分のウェブフォーム送信を削除

すべてのウェブフォームで自分の送信を削除することを許可します。

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ハンドラーの設定を確認し、デフォルトの送信元アドレスをチェックし、メールシステムが正しく設定されていることを確認してください。ハンドラー設定でメールデバッグを有効にしてください。

Ajaxが動作しない

ブラウザコンソールでJavaScriptエラーを確認してください。フォーム設定でAjaxが有効になっていること、競合するJavaScriptライブラリがないことを確認してください。

ファイルアップロードが失敗する

ウェブフォーム要素設定とPHP設定でファイルサイズ制限を確認してください。アップロードディレクトリに適切な書き込み権限があることを確認してください。

条件分岐ロジックが動作しない

state条件が正しく設定されていることを確認してください。一部のstateはすべての要素タイプで動作しない場合があります。ブラウザキャッシュをクリアしてテストしてください。

サードパーティライブラリが見つからない

drush webform:libraries:downloadを実行して必要なライブラリをインストールするか、設定でCDN使用を有効にしてください。

送信が表示されない

フォーム設定で送信ストレージが有効になっていることを確認してください。ユーザーに送信を表示する権限があることを確認してください。

Token置換が動作しない

Tokenモジュールがインストールされていることを確認してください。Token構文と、Tokenが現在のコンテキストで利用可能であることを確認してください。

Security Notes 10
  • 「ウェブフォームを管理」権限はグローバル設定へのアクセスを提供するため、信頼できる管理者にのみ付与してください
  • 「ウェブフォームソースコードを編集」権限によりユーザーがrender arrayを変更できるため、制限する必要があります
  • 「ウェブフォームTwigを編集」権限はTwig関数へのアクセスを提供するため、信頼できるユーザーにのみ付与してください
  • 「CSS/JSアセットを編集」権限はカスタムコードインジェクションを許可するため、制限する必要があります
  • ファイルアップロード要素は適切なファイルタイプ制限とサイズ制限で設定する必要があります
  • 公開フォームではCAPTCHAまたは他のスパム対策を有効にしてください
  • 認証済みユーザーのみにアクセスを制限するには、機密フォーム設定を使用してください
  • プライバシーに敏感なフォームではIPトラッキングの無効化を検討してください
  • ハンドラー設定を確認して、機密データがメールやリモートPOSTで公開されていないことを確認してください
  • 個別のウェブフォームのアクセス制御を使用して、送信の表示、編集、削除ができるユーザーを制限してください