web-dev-qa-db-ja.com

アクションを評価できないルールを修正するにはどうすればよいですか?

commerce 製品に関連するいくつかのイベントに作用する2つのルールを作成しました。

最初のは、参照ノード削除イベントで動作し、ノード削除時に製品を削除します。

2番目のは、 node_expire を使用して、期限切れイベント時にノードを削除します

期限切れのイベントを発生させるためにcronを実行すると、最初のルールを無効にした場合を除いて、アクションは実行されません

2つのルールに条件があるため、ルールcomponentsおよびrule setsを試しましたと共通のアクションしかし、何も変更されません。

編集:デバッグを行ったところ、警告メッセージとエラーメッセージが見つかりました

[警告]

WDルール:IDが「102」のcommerce_productをロードできません
WDルール:アクションentity_fetchを評価できません。
WDルール:変数entity_fetchedを取得できません。定義されていません。

[エラー]

WDルール:アクションentity_deleteを評価できません。

3
Mohammed Gomma

エラー:

WDルール:変数Xを取得できません。定義されていません。

ルールは変数Xをロードできないことを意味します。

コントリビュートされたモジュールを使用している場合は、ルールが正しい順序で構成されていることを確認してください。そうでない場合は、モジュールの問題キューでバグの可能性がないか確認してください。

カスタムモジュールを使用している場合は、これらのルール変数が正しい方法で渡されていることを確認してください。

たとえば、hook_rules_action_infoに次のサンプルルールがあるとします。

'foo_rule' => array(
  'label' => t('Foo rule'),
  'provides' => array(
    'object_to_send' => array(
      'type' => 'data',
      'label' => t('Data Object to pass'),
    ),
  ),
),

object_to_sendは、一致する配列キーを提供する必要があります。例:

return array( 'object_to_send' => $object);

したがって、シーケンスの次のルールはその変数を「見る」ので、それを使用できます。

1
kenorb

ルールで、一番下までスクロールし、[設定]をクリックして、最初のルールに2番目のルールよりも高い重みを付けます。

0
Niall Murphy