Rules UIを使用してルールを作成しました。私のルールは機能していません。比較を行う条件内で変数の値を表示して、ルールをデバッグする必要があります。
ルールアクション内でシステムメッセージを追加できることがわかりましたが、条件付きで変数値をデバッグするにはどうすればよいですか?
ルールのデバッグログに変数の値が表示されません。
どうすればできますか?
いくつかのデバッグが必要なルール条件の組み合わせがある場合があります。 Rules はすばらしいですが、期待どおりに機能しない場合はデバッグが難しい場合もあります。そのようなデバッグを行うためのいくつかの典型的な機能があります(以下でさらに詳しく説明します)が、[〜#〜] k [〜#〜]eep-[〜#〜] i [〜#〜]t-[〜#〜] s [〜#〜]uper-[〜#〜] s [〜#〜]私がよく使用する簡単なテクニックは、私の[〜#〜] bingo [〜#〜]-trick。このようなルールのサンプルは、「 管理者がプロファイルを更新するときに、ユーザーにメールを送信するためにどのルール条件を使用できるか? への私の回答にあります。愚かですが、シンプルで効率的です(私は思います)。
また、1つのルールに複数のルール条件がある場合は、個々のルール条件ごとに(「ビンゴ」を取得した場合)どうなるかを確認する必要があります。これは、使用している3つのルール条件のうち2つを(一時的に)削除し、それぞれが期待するルールアクションになるかどうかを確認します(単純なビンゴメッセージで十分です)。
上記で問題が解決しない場合は、以下で詳しく説明するように、通常、より高度なデバッグの方法が2つあります。
ルール設定内で、ルールモジュールに付属するデバッグ機能を少し試します。少なくとも "Rules Evaluation Log"を見てください(ルールロジックが実行され、実際にそのロジックが期待するものと一致します)。
そのようなルール評価ログの例を次に示します。
また、(一時的に) Devel モジュールを有効にして、「値を表示する」などのルールアクションを(一時的に)追加できるようにすることもできます。これは(質問のように)ルール条件の範囲内ではありませんが、それを最初のルールアクションとして追加すると、表示される値がルール条件の最後にあるこれらの変数の値と同じであることを確認できます。
明らかに、ルールアクションの実行を妨げるルール条件がないことを確認します(必要に応じて、そのようなルール条件を一時的に削除します)。
ルールを複製して、複製を調整し、条件を削除して、デバッグしようとしている2つの変数値を示すシステムメッセージアクションを追加します。
ところで、最終的にはxdebugのようなデバッグ環境をインストールしたいと思うかもしれません。これは、迅速な修正のために取り組むよりも長いプロセスになる可能性があります。ただし、現場での作業を続けることを計画している場合は、非常に役立ちます。
あなたはここで良いスタートを見つけるでしょう: https://stackoverflow.com/questions/7303912/setting-up-xdebug-for-drupal-site
Drupalのルールのデバッグにはddebug_backtrace
関数を使用できますが、この関数を使用する前にdevel
モジュールをインストールする必要があります(ddebug_backtrace
はこのモジュールです。詳細については ここをクリック をご覧ください。