web-dev-qa-db-ja.com

ルール条件でWebフォーム送信データを使用する方法

ユーザーがWebフォームに入力したときにメールを送信したいのですが、それがレビューフォームであり、ユーザーが7より高いフィードバックを提供した場合のみです。

そこで、私たちはどれだけ良いかを尋ねています。ユーザーが1〜10の値を指定すると、その数値が7より大きい場合にメールを送信します。

基本的に、RulesモジュールとWebform_rulesモジュールをインストールしました。これで、アクションを含むルールを作成できます:「フォームが送信された後」

次に、nidを特定のWebフォームのnidと同じにしました。次に、2番目の条件を作成して、入力した値を7、8、9、または10と比較するため、データ比較条件を作成します。条件が 'data'で、フィールド名が 'data:grade-value-raw'の場合、grade-value-rawがないことを通知するだけです

ページに[data:grade-value-raw]を表示するようにリアクションを設定すると、機能します。

ルール条件で使用できないのはなぜですか?

4
Noë

あなたが仕事をしようとしているものへの「手がかり」は、すべてにアクセスできることですlabelsおよびWebフォームの任意のフィールドのすべてのvalues、すなわち:

  • [data:MachineFieldName-title]には、マシン名MachineFieldNameを持つフィールドのLabelが含まれています。
  • [data:MachineFieldName-value]には、マシン名MachineFieldNameを持つフィールドのValueが含まれています

したがって、あなたの場合、[data:grade-value]のようなものを使用して機能させることができるはずです。

これと、これに関するプロトタイプルールの詳細については、「 ルールを使用してWebフォームからノー​​ドを作成する方法 」への回答を参照してください。

  • 1回目の試行は「エンティティにフィールドがあります」の使用に関連しています(これは Webform では機能しません)
  • 2回目の試行は、 Webform の場合の対処方法を説明します。

上記は良いスタートですが、目標を達成するには十分ではありません(=検証 "...記入された値を比較するための2番目の条件は7、8、9、または10なので、私はあなたの質問のように、データ比較条件を作成します ")。ただし、 my answer から " Rulesモジュールを使用する場合に、送信されたWebフォームデータとデータ比較を行う方法は? "で説明されているものと同様の手法を使用できます。略して:

  • Add a variable[data:grade-value-raw]と等しい値が割り当てられた(そしてデータ型がおそらくinteger)です。
  • 条件付きルール モジュールを使用して、質問のようにデータ比較を実行します(7、8、9、または10の場合)。ただし、このデータ比較では、追加した変数の値を参照します(それが手がかりです)。

この回答では Conditional Rules モジュールを使用していますが、Rulesアクションを実行してルールコンポーネント(適切なルール条件を追加する)を実行することもできるため、これは必要ありません。追加モジュール。詳細については、「 条件付きルールモジュールを使用する代わりの方法は何ですか? 」の回答を参照してください。

PS:この質問はD7に関するものだと思います。

3
Pierre.Vriens

これはあなたの質問に直接答えるものではありませんが、代替ソリューションです。選択ボックスでの評価を前提として、これをルールなしで、Webフォームだけで行うことができます。

Webフォームを編集するときの電子メールセクションでは、電子メールアドレスを入力する代わりに、「コンポーネント値」を選択できます。選択ボックスを選択し、値7、8、9、10のメールアドレスを入力します。

これらの値が選択された場合にのみメールを送信する必要があります

2
Leigh

(条件付き状態自体ではなく)条件付きルールを使用して、ルールに条件を追加します。多くの場合、ルールの条件付き状態が常にフォームのデータにアクセスできるわけではないことを発見しました(エンティティは同じ取引を形成します)。

If [フィールド名]が条件よりも大きい場合、それが機能するはずです。

1
Rob