Drupal8 / 9のWebフォームモジュールの詳細

公開: 2021-10-12

Webformモジュールは、Drupalの最も強力で柔軟なフォームビルダーおよび送信マネージャーです。 これにより、サイトビルダーは、複雑なフォームを即座に簡単に作成できます。 一定レベルのデフォルト設定が付属しており、要件に応じてカスタマイズすることもできます。

この素晴らしいブログをチェックしてください-Drupal8Webformモジュール-Drupal8 / 9サイトでWebformモジュールを使い始めるのに役立つ簡単なチュートリアル。 これは、基本を簡単に理解するのに役立ちます。

Webformモジュールには多くの興味深い機能が付属しているので、ここでいくつか言及したいと思います。

Webフォームモジュール

Webフォームの機能

1.フォームと要素の変更

フォーム、要素、およびそれに関連する設定は、それぞれのフックを使用して変更できます。 以下に使用できるフックをいくつか示します。詳細については、 webform.api.phpファイルを参照してください。

  • フォームフック

◦hook_webform_submission_form_alter()
◦Webフォーム送信フォームがレンダリングされる前に変更を実行します。

  • エレメントフック

◦hook_webform_element_alter()
◦Webフォーム要素を変更します。

  • オプションフック

◦hook_webform_options_alter()
◦Webフォームオプションを変更します。

  • ハンドラーフック

◦hook_webform_handler_invoke_alter()
◦メソッドが呼び出されたときにWebフォームハンドラーを操作します。

  • より多くのフック…

◦hook_webform_access_rules_alter()など。
◦Webフォームレベルごとに管理する必要があるアクセスルールのリストを変更します。

2.YAMLソース

WebformモジュールはYAMLフォームモジュールとして開始され、YAMLマークアップを記述してフォームを作成できるようになりました。 ある時点で、YAMLフォームモジュールはUIを持ち始め、Drupal8のWebフォームモジュールになりました。

  • YAMLは、Webフォームの要素を構築および一括編集するための、シンプルで習得しやすいマークアップ言語を提供します。
  • (表示)ソースページでは、開発者はYAMLマークアップを使用してWebフォームのレンダリング配列を編集できます。 開発者は、(表示)ソースページを使用してWebフォームを手動でコーディングし、Webフォームのラベルをすばやく変更したり、複数の要素をカットアンドペーストしたり、要素を並べ替えたり、要素にカスタムプロパティやマークアップを追加したりできます。
  • お問い合わせフォームとそれに対応するYAMLソースコードの例を次に示します。

ドラッグアンドドロップUIを使用したお問い合わせフォーム

ドラッグアンドドロップUIを備えたお問い合わせフォーム

YAMLソースコード

お問い合わせフォームのYAMLソースコード

3.条件付きフィールド

Webformを使用すると、フォーム内の要素に条件付きロジックを追加できます。 フォーム内の別の要素の値に基づいて要素の可視性を条件付きで処理する必要がある小さな例を考えてみましょう。

ここではオプションの「メール」や「携帯電話番号」の2段階のフィールド、STEP 1(ラジオ要素)と例フォームです。 STEP 2 (フィールドセット)。「Eメール」と「携帯電話番号」の2つの要素があります。

ビルドページ

フォームビルドページ

フォームビューページ

フォームビューページ

上記の例では、ステップ1で「Eメール」オプションが選択されている場合は「Eメール」フィールドを表示し、ステップ1で「携帯電話番号」オプションが選択されている場合は「携帯電話番号」フィールドを表示します。

これを実現するには、[メール]フィールドを編集し、[条件]タブをクリックし、[状態]を[表示]として選択し、[トリガー/値]を[ステップ1 [ラジオ]の値はメールです]に設定します。 同様に、同じ手順に従って「携帯電話番号」フィールドに条件付きロジックを追加し、「トリガー/値」を「ステップ1 [無線]値はmobile_number」に設定します。 Webフォームの最終的な外観は次のとおりです。

メール要素の編集

条件付きロジックの設定

ステップ1

STEP1で「Eメール」を選択した場合のフォーム

ステップ2

ステップ1で「携帯電話番号」を選択した場合のフォーム

4.カスタムオプションのプロパティ

Webformを使用すると、from要素にカスタムオプションプロパティを追加できます。

フォーム内の別の要素の値に基づいて、ラジオ要素のオプションを条件付きで処理するシナリオを想像してみてください。 どのようにそれをしますか?

さて、UIから条件付きロジック設定を介してそれを処理する方法を見つけられませんでした。 ただし、要素に「カスタムオプションプロパティ」を設定するためのプロビジョニングがあります。ここでは、YAMLコードを使用して、要素内のオプションを対象とする必要な条件付きロジックを記述します。

これは例です。2つの無線要素が表示され、最初の要素で選択したオプションに基づいて、2番目の要素内のオプションの表示が変わるはずです。

フォームビルドページ

フォームビルドページ

カスタムオプション

カスタムオプションプロパティを追加する前のフォームビューページ:

  • 「タイプA」を選択すると、2番目の要素から「オプション1」と「オプション2」が表示されます。 同様に、「タイプB」を選択すると、「オプション3」と「オプション4」が表示されます。 これを実現するには、2番目の要素を編集し、[詳細設定]タブに移動し、[オプション(カスタム)プロパティ]セクションまで下にスクロールして、必要なロジックをYAMLに記述します。
オプション要素オプション要素の編集

オプションプロパティの設定

タイプを選択

「タイプA」を選択した場合のフォーム

タイプBを選択

「タイプB」を選択した場合のフォーム

5.Webフォーム送信メールハンドラー

  • メールハンドラー

電子メールハンドラーは、電子メールを介してWebフォーム送信を送信します。 電子メールハンドラーをWebフォームに追加するには、[設定]、[電子メール/ハンドラー]タブの順に移動します。 次に、[メールの追加/ハンドラーの追加]ボタンをクリックします。

メールハンドラー

メールハンドラーを追加する

  • 下の画像に示すように、[全般]タブで、[タイトル]を追加し、[送信先]と[送信元]の詳細を設定します。 必要に応じてメッセージ「Subject」と「Body」を追加し、構成フォームを保存します。
メール確認確認ハンドラーメール確認ハンドラーメッセージタイトル説明

そしてそれはそれについてです。 フォームが送信されるたびにハンドラーが解雇されます。

  • Webフォームに条件付き電子メールハンドラーを設定することもできます。つまり、フォーム内の特定の要素の値に基づいてさまざまな電子メールハンドラーをトリガーします。
  • たとえば、値が「タイプ1」および「タイプ2」の「選択」要素について考えてみます。 ユーザーが「タイプ1」を送信した場合は、「宛先」アドレスを「 [電子メール保護] 」に設定した「電子メール-タイプ1」ハンドラーをトリガーします。 ユーザーが「タイプ2」を送信した場合は、「宛先」アドレスを「 [電子メール保護] 」に設定した「電子メール-タイプ2」ハンドラーをトリガーします
  • 電子メールハンドラーに条件付きロジックを追加するには、1つのハンドラーを作成し、「Email-Type1」という名前を付けます。 「宛先」アドレスを「 [電子メール保護] 」に設定し、「条件」タブに切り替え、「状態」を「表示」として選択し、「トリガー/値」を「タイプの選択[選択]値はtype_1」に設定します。
  • 同様に、2番目のハンドラーを作成し、「Email-Type2」という名前を付けます。 「宛先」アドレスを「 [電子メール保護] 」に設定し、「条件」タブに切り替え、「状態」を「表示」として選択し、「トリガー/値」を「タイプの選択[選択]値はtype_2」に設定します。
メールタイプ

  • スケジュールされた電子メールハンドラー

    • WebformモジュールのEメールハ​​ンドラーを拡張して、Eメールをスケジュールできるようにします。 この機能を使用するには、「Webform ScheduledEmailHandler」サブモジュールを有効にします。
    • フォーム送信の電子メールの送信をスケジュールするには、[ハンドラーの追加]ボタンをクリックします。 ここで「スケジュールされた電子メール」ハンドラーを選択します。
ハンドラーを選択

通常の「Eメールハ​​ンドラー」と比較して、「ScheduledEmail」ハンドラーには追加の構成設定が1つだけあります。 そして、それは一般設定タブの下にスケジュールメール日付を追加することです。

メールハンドラーのスケジュール

スケジュールされた電子メールハンドラー

ハンドラーをトリガーする日付を設定すると、次のcronが実行されたときに、電子メールが送信されます。

ヘルプを見つける

Webフォームモジュールのヘルプを求めるには、さまざまな方法があります。 ここにいくつかのソースのリストがあります:

  • ドキュメント、クックブック、スクリーンキャスト
    • https://www.drupal.org/docs/8/modules/webform
  • Webフォーム発行キュー
    • https://www.drupal.org/project/issues/webform
  • Drupal Answers
    • http://drupal.stackexchange.com
  • Slackチャネル
    • Drupal slackワークスペース内の#webformチャネルで、Webformモジュールに関するクエリをいつでも投稿できます。 コミュニティの誰もが、モジュールのメンテナ自身でさえ常に周りにいて、あなたの問題を案内してくれるほど親切です。

Drupal 8 / 9Webformモジュールに対する彼の執拗なサポートに対してJacobRockowitzに大声で叫びました。 彼がいなかったら、Webformは今のようにはなりませんでした。