web-dev-qa-db-ja.com

ユーザー参照フィールドを介してWebフォームで選択したユーザーに電子メールを送信する方法

人事部が使用するウェブフォームがあります。ユーザーのフォームコンポーネント、つまりユーザー参照フィールドがあります。

Webform Rules を使用して、選択したユーザーに電子メール通知を送信します。

私が使用する場合:[data:{component}-display]、ユーザー名[1]が表示された後、ユーザーへのリンクを参照します。

1
buboreka

あなたの質問は(まだ)そうではありませんが、私は仮定しています(「...私はユーザーのフォームコンポーネントを持っています、それはユーザー参照フィールドです... ") Webform References モジュールも使用していること。そのモジュールに関するいくつかの詳細(プロジェクトページから):

Webform でnode/term/userを参照できるwebformコンポーネントを提供します。 「選択リスト」、「オートコンプリート」、「チェックボックス」、「ラジオ」をウィジェットとして提供します。

Webform Rules モジュールも有効にしている場合は、( Rules を使用して)ルールを作成できます。以下は、参照されたユーザーの電子メールIDに電子メールを送信するルールのエクスポートです。

{ "rules_email_submitted_webform_to_referenced_user" : {
    "LABEL" : "eMail submitted webform to referenced user",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "webform_rules", "rules" ],
    "ON" : { "webform_rules_submit" : [] },
    "IF" : [
      { "webform_has_id" : {
          "form_id" : [ "form_id" ],
          "selected_webform" : { "value" : { "webform-client-form-191" : "webform-client-form-191" } }
        }
      }
    ],
    "DO" : [
      { "drupal_message" : { "message" : "The webform submitted contains the field labeled \u0022[data:demoform_userref-title]\u0022 which has value \u0022[data:demoform_userref-value-raw]\u0022." } },
      { "variable_add" : {
          "USING" : { "type" : "text", "value" : "[data:demoform_userref-value-raw]" },
          "PROVIDE" : { "variable_added" : { "referenced_user_txt" : "Referenced user" } }
        }
      },
      { "data_convert" : {
          "USING" : { "type" : "integer", "value" : [ "referenced-user-txt" ] },
          "PROVIDE" : { "conversion_result" : { "referenced_user_uid" : "Referenced User Uid" } }
        }
      },
      { "entity_fetch" : {
          "USING" : { "type" : "user", "id" : [ "referenced-user-uid" ] },
          "PROVIDE" : { "entity_fetched" : { "user_fetched" : "Fetched user" } }
        }
      },
      { "drupal_message" : { "message" : "referenced_user_txt: [referenced-user-txt:value] AND referenced_user_uid: [referenced-user-uid:value] AND\r\n\r\nUser fetched: uid=[user-fetched:uid] name=[user-fetched:name] mail=[user-fetched:mail]" } },
      { "mail" : {
          "to" : [ "user-fetched:mail" ],
          "subject" : "Hey [user-fetched:name] you have new mail ...",
          "message" : "The webform submitted contains these fields:\r\n\u003C\/ul\u003E\r\n\u003Cli\u003Ethe field labeled \u0022[data:demoform_title-title]\u0022 which has value \u0022[data:demoform_title-value-raw]\u0022.\u003C\/li\u003E\r\n\u003Cli\u003E the field labeled \u0022[data:demoform_text-title]\u0022 which has value \u0022[data:demoform_text-value-raw]\u0022.\u003C\/li\u003E\r\n\u003Cli\u003E the field labeled \u0022[data:demoform_number-title]\u0022 which has value \u0022[data:demoform_number-value-raw]\u0022.\u003C\/li\u003E\r\n\u003Cli\u003E the field labeled \u0022[data:demoform_option-title]\u0022 which has value \u0022[data:demoform_option-value-raw]\u0022.\u003C\/li\u003E\r\n\u003C\/ul\u003E",
          "language" : [ "" ]
        }
      }
    ]
  }
}

このルールの詳細(このルールを自分のサイトにインポートする前に、ケースに適合するために必要なものを必ず適用(名前変更)してください):

  • 私が使用しているフォームIDは191
  • すべてのフォームコンポーネントには、demoformで始まるマシン名があります。
  • 参照ユーザーのマシン名はdemoform_userref

ルールイベントとルール条件は単純ですが、実際のルールmagicはルールアクションで発生します。

  1. Show a message サイト上(デモ目的のみ)。
  2. Add a text variable (選択したユーザーに関する「一部の」Webフォームデータをキャプチャするには、テキストである必要があります...)。
  3. Convert a variabletextからinteger変数へ(変数には整数が必要です次のルールアクション、テキストは機能しません...)。
  4. Fetch an entity by ID (そのIDを持つユーザーを取得するための整数変数)。
  5. Show a message サイト上(デモ目的のみ)。
  6. Send an eMailto取得したユーザー)からの電子メールID。

デモ

デモフォームを送信すると、次のようなメッセージが表示されます。

The webform submitted contains the field labeled "User" which has value "123".
referenced_user_txt: 123 AND referenced_user_uid: 123 AND User fetched: uid=123 name=Pierre.Vriens [email protected]

さらに、pierre.vriens @ somewhere.comにメールが届きました...

件名

  Hey Pierre.Vriens you have new mail ...

メッセージ

  The webform submitted contains these fields:
   * the field labeled "Title" which has value "Some title".
   * the field labeled "Text" which has value "Some text".
   * the field labeled "Number" which has value "7".
   * the field labeled "Option" which has value "C". 
0
Pierre.Vriens