web-dev-qa-db-ja.com

ルールアクションでフィールド値を変更するにはどうすればよいですか?

フィールドの値を変更できる Rules アクションを設定しようとしています。 Nodeのデータ型のアクションセットを作成しました。ルールアクションを作成するとき、すべてのデフォルトDrupalノードフィールドにアクセスできますが、フィールドにはアクセスできません。

これは単に不可能ですか?これを機能させるために他のモジュールが必要ですか?

19
Joren

まず、フィールドがそのノードに存在するかどうかを確認するための条件を追加する必要があります。その場合にのみ、アクションでフィールドを使用できます。これを行うには特定の条件があります。

15
Berdir

「エンティティにフィールドがある」(または「コンテンツがタイプである」)条件を使用すると、アクション「データ値の設定」でデータを選択してフィールドを使用できるようになります。

6
jcarballo

以前の両方の回答と矛盾しないようにするが、IMOはどちらも欠落している(無視している?)質問の重要な部分である「...アクションを作成しましたセット... "。確かに、ソリューションの一部は、確かに「_Entity has field_」です( jcarballo からの回答のように)。ただし、ルールアクションセットの設計により、ルール条件を含めることはできません。そのため、この質問への回答を完了するには、次のいずれかが必要です。

上記を念頭に置いて、ルール条件_Entity has field_(必要なフィールドに関連する)も追加する場合、フィールドの「データ値の設定」などのルールアクションを作成できるはずです。値を設定します)。そして、その_Entity has field_条件を他のルールの前に必ず追加してください。このフィールドを参照する可能性のある条件(ルールにそのような条件がある場合)。

それは、ルールUIで言及されていることでもあります。 「データ比較」条件を追加する場合:「」と表示されている場所で、データセレクターを使用して、ルールで使用できるデータにドリルダウンできます。エンティティフィールドをデータセレクターに表示するには、 「エンティティにフィールドがある」(または「コンテンツのタイプ」)」という条件を使用します。

この_Entity has field_条件の重要性を説明するビデオチュートリアルについては、 データタイプとデータ選択 を参照してください。

2
Pierre.Vriens