web-dev-qa-db-ja.com

エンティティトークンはルールで使用できますが機能しません

送信者がレビュー担当者を選択する送信レビューページを作成しています。投稿はレビュアーのプロフィールページに表示され、承諾ボタンと辞退ボタンが Button Field モジュールで実装されています。レビュー担当者が同意ボタンをクリックすると、新しいレビューコンテンツフォームにリダイレクトされます。

レビューコンテンツタイプには、送信コンテンツタイプへの ノード参照 フィールドがあり、 ノード参照URLウィジェット を使用して自動的に入力されます。

Rules モジュールを使用して、承諾ボタンがクリックされたかどうかを確認し、Pageリダイレクトアクションを実行します。

defined rule

条件を定義した後エンティティのタイプはNodeです。置換パターンが表示され、使用できるようです:

replacement patterns

だから私はリダイレクトするURLに相対URLとエンティティIDを入れます:

node/add/review/[entity:nid]

しかし、効果はありません。ルールは正しく実行されますが、[entity:nid]は空で、レビューアはnode/add/review /にリダイレクトされるため、ノード参照フィールドに事前入力するノードIDは使用できません。

私は何か間違ったことをしていますか、それともボタンフィールドの bug ですか?その機能を別の方法で実装するためのヒントはありますか?

3
geraldo

Button Field モジュールを Rules モジュールと組み合わせて使用​​することに慣れていません。

しかし、あなたの質問の詳細から、entity:nid値は実際には空白です。可能な解決策は、通常、次のいずれかのルールアクションを追加することです。

  • 「IDでエンティティを取得する」(処理しているIDがわかっている場合)。
  • 「プロパティによるエンティティの取得」(後続のルールループで処理されるもののリストを作成する基準がある場合)。

特に「IDでエンティティを取得」はやってみるといいと思います。また、 問題nr 1796952のコメントnr で記述されているため、次のような疑似コードがあります。

  • イベント:ユーザーがボタンフィールドをクリックしたとき
  • 条件:エンティティはエンティティのタイプです(すべてがルールのスコープ内にあることを確認してください)
  • 行動:
    • IDを使用してエンティティをIDで取得します(データセレクター):entity:nid
    • 「フェッチされたエンティティ」をコンポーネントに送り込み、そこで実行する

上記のいずれも役に立たない場合は、「投稿がレビューユーザーのプロフィールページに表示されます」の部分あなたの質問は、まったく異なるアプローチを使用するのに役立つかもしれません。それがビュー結果のようなものである場合は(そうですか?)、次のいずれかの方法を使用できます。

  • ルールアクションを追加して、 [〜#〜] vbo [〜#〜] 有効なビューを介して作成された結果のリストをロードします。
  • Views Rules モジュールを使用して、そのビューの各行をルールで処理しますが、そのようなビューの各列をルールトークンとして使用できるようにすることができるため、「nid」が含まれている場合は、あなたが探しているものを持っています。

上記のいずれも役に立たない場合は、ルールのデバッグを使用することができます(たとえば、 Devel モジュールを使用して関連するものの値を表示し、「値を表示する」などのルールアクションを(一時的に)追加できるようにします。 "。詳細については、「 条件内の変数の値を表示するにはどうすればよいですか? 」を参照してください。

PS:それら2[〜#〜] and [〜#〜]ルール条件は必要ありませんあなたのケースでは(それはルールがマルチロールルール条件を組み合わせる方法のデフォルトです)。

2
Pierre.Vriens