この使用例を再現する手順:
上記の3と4をこの順序で実行して、作成されたエンティティとWebフォーム送信の両方にアクセスできるようにするにはどうすればよいですか?つまり、引数を渡すか、そうでなければ。
いくつかの方法はあるが、私の質問に完全には答えていない関連記事:
Webformルール を使用していると仮定すると、3と4をルールコンポーネントに移動する必要がありますが、残念ながらWebformルールではWebformデータを公開できません(送信送信)ルールとコンポーネント間)ここからのパッチなし https://www.drupal.org/node/2020149 それなしでは、データはトークンを使用してのみ利用できます、そしてwebformデータを変数に設定することさえできません。
別の解決策があります。WebフォームSID([data:sid])を抽出して、新しく作成したエンティティとWebフォーム自体と一緒にコンポーネントに送信し、コンポーネント内で受信した[data:sid]を整数に変換してフェッチできます。送信(ルールアクション:Webフォーム送信の取得)し、PHPを使用してアクセスします。また、コンポーネント内でEntity:hasフィールドを使用して、新しく作成したエンティティのすべてのフィールドにアクセスすることもできます。
あなたの問題は、ステップの順序を維持し、同じルール内のルールアクション(#2)の後にルール条件(#3)を実行することだと思います。 @No Sssweatのソリューションはこれを行うための可能な方法です。以前は、ルールインターフェースのアクション部分内に条件を作成するために 条件付きルール を使用しました。これにより、追加のルールコンポーネントを作成する必要なく、エンティティをスコープに含めることができました。
目標を達成するには(=「...にエンティティフィールドを Webform ノードへの変換時に Rules に表示する...」、質問のタイトルのように)、次のようにします。 my answer から " Rulesモジュールを使用するときに送信されたWebフォームデータとデータ比較を行う方法は? "で説明されているものと同様の手法を使用できます。略して:
Add a variable
に追加のルールアクションを追加します(情報を転置するWebformコンポーネントごとに、それに割り当てられた値が[data:ComponentName-value-raw]
に等しくなります(データタイプがWebformコンポーネント)。form_id=191
およびこれらのWebフォームコンポーネントを含むWebフォームを想定します。
demoform_title
、データタイプ=テキストフィールド。demoform_text
、データタイプ= Textarea。demoform_number
、データタイプ=番号。demoform_option
、データタイプ=オプションを選択(単一の値)。次のフィールドを持つ記事コンテンツタイプを想定します。
title
、フィールドタイプ= Nodeモジュール要素。body
、フィールドタイプ=テキスト(長)および要約。field_free_format_nr
、フィールドタイプ=整数。field_optionlist
、フィールドタイプ=リスト(テキスト)。以下に、(Article
タイプの)新しいノードを作成し、上記のWebformコンポーネントに含まれるデータを使用する(Rulesエクスポート形式の)カスタムルールを示します。
{ "rules_create_a_node_from_webform_data" : {
"LABEL" : "Create a node from webform data",
"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 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" } },
{ "variable_add" : {
"USING" : { "type" : "text", "value" : "[data:demoform_text-value-raw]" },
"PROVIDE" : { "variable_added" : { "var_demoform_text" : "Form variable text" } }
}
},
{ "variable_add" : {
"USING" : { "type" : "text", "value" : "[data:demoform_number-value-raw]" },
"PROVIDE" : { "variable_added" : { "var_demoform_number_text" : "Form variable number text" } }
}
},
{ "data_convert" : {
"USING" : { "type" : "integer", "value" : [ "var-demoform-number-text" ] },
"PROVIDE" : { "conversion_result" : { "var_demoformvar_number" : "Form variable number" } }
}
},
{ "variable_add" : {
"USING" : { "type" : "text", "value" : "[data:demoform_option-value-raw]" },
"PROVIDE" : { "variable_added" : { "var_demoform_option" : " Form variable option" } }
}
},
{ "entity_create" : {
"USING" : {
"type" : "node",
"param_type" : "article",
"param_title" : "[data:demoform_title-value-raw]",
"param_author" : [ "user" ]
},
"PROVIDE" : { "entity_created" : { "article_created" : "Created article" } }
}
},
{ "data_set" : {
"data" : [ "article-created:body:value" ],
"value" : [ "var-demoform-text" ]
}
},
{ "data_set" : {
"data" : [ "article-created:field-free-format-nr" ],
"value" : [ "var-demoformvar-number" ]
}
},
{ "data_set" : {
"data" : [ "article-created:field-optionlist" ],
"value" : [ "var-demoform-option" ]
}
},
{ "data_set" : { "data" : [ "article-created:comment" ], "value" : "0" } },
{ "entity_save" : { "data" : [ "article-created" ], "immediate" : "1" } },
{ "drupal_message" : { "message" : "A new article got created, with nid=[article-created:nid] and url=[article-created:url]" } }
]
}
}
追加されたルールアクションの詳細:
Show a message on the site
:これはデバッグ/デモの目的でのみ使用します(不要になった場合は削除してください/もう必要ありません)。 Webフォームを送信した後に表示されるサンプルメッセージを次に示します。
送信されたWebフォームには、次のフィールドが含まれています。
- 「タイトル」というラベルの付いたフィールドには、「私のウェブフォームのいくつかの興味深いタイトル」という値があります。
- 「Text」というラベルの付いたフィールドには、「Just some text、with some additional text and still another line and another one」という値があります。
- 値「842316」を持つ「番号」というラベルのフィールド。
- 値「A」を持つ「オプション」というラベルの付いたフィールド。
Add a variable
(2回):Webformコンポーネントdemoform_number
およびdemoform_option
の値を後続のルールで使用できるようにする行動。 demoform_number
の場合、追加のルールアクションConvert data type
が必要です。
Set a data value
(3回):先行するルールアクションで作成された変数を使用して、ノードの本体と2つのノードフィールドにデータを入力します。
Set a data value
:作成中のノードに「コメントクローズ」を設定するには(これはオプションのルールアクションであり、他のことの説明にすぎません)このようなノードを作成することで実行できます)。
Save entity
:実際にノードを保存します。
Show a message on the site
:これはデバッグ/デモの目的でのみ使用します(不要になった場合は削除してください/もう必要ありません)。 Webフォームを送信した後に表示されるサンプルメッセージを次に示します。
Nid = 123およびurl = http://www.example.com/node/12 を使用して、新しい記事が作成されました
上記のサンプルのようにデータを含むWebフォームを送信すると、新しい記事(ノードID = 123
)が作成され、そのノードに関する次の詳細が含まれます。
ボディ:
ただのテキスト、
いくつかの追加テキスト付き
さらに別のライン
そしてもう一つ
自由形式Nr:842316
A
"に対応するラベル)この回答のカスタムルールでは、(危険な)PHPフィルターを有効にする必要はありません(現在のaccepted回答で言及されているものとは対照的です)。また、現在のaccepted回答で言及されているパッチが必要です。
この回答は、(質問の)「ステップ4」に対処する必要があります。 (質問では)「ステップ3」は必要ないようですが。複数のタイプのノードを作成する場合を除きます。任意のWebformコンポーネントで指定された値に基づいています。その場合は、 条件付きルール モジュールを使用して、サンプルルールのルールアクションのセットをさらに改善するだけです。