web-dev-qa-db-ja.com

dpm()は画面に結果を表示しません

file_scan_directory()の実行に約10秒かかる と同じ問題があります。 dpm(func_get_args())の提案を試したところ、残念ながら何も表示されませんでした。

すべてのキャッシュをクリアし、cronタスクを実行しました。何が欠けていますか?

23
Jimmy

print $messages;templateファイルにpage.tpl.phpがあることを確認してください。デフォルトでは、devel(dpm)はそのコンテンツをサイトのメッセージ領域に印刷するように構成されています。したがって、何らかの理由でテンプレートが$messagesのコンテンツをレンダリングしない場合、何も表示されません。

28
svetlio
  1. krumo($variable)が機能しない場合でも、dpm($variable)が機能することがあります。

  2. print dpm($variable)が機能しない場合でも、dpm($variable)が機能することがあります。

    1. print $messagespage.tpl.phpがもうない場合の解決策となることもあります。多分あなたはそれを元に戻すことができます。
13
leymannx

Drupalサイトにログインし、Develにアクセスするための適切な権限が必要です。管理者がログインする必要があるため、ログインしてください。

9

devel_debug_log をお勧めします。これにはdevelモジュールが必要であり、ddl()関数を提供します。 ddlは設定でレポートにページを追加するので、ウォッチドッグへの印刷に似ていますが、デバッグメッセージを送信できるすっきりしたページがあり、メッセージがクリアされる前にメッセージがクリアされる可能性がある競合タイプの状態を心配する必要はありませんそれらを見るチャンス、またはあなたの場合のように、テーマの問題。

(これはまた、あらゆる種類のAPIを構築しようとしている場合に非常に便利なツールです。これらの要求はすべて、どのような種類のdpm()メッセージも表示しないためです。)

9
UnsettlingTrend

dpm()はこのモジュールで宣言された関数であるため、 Devel モジュールを有効にしてインストールしたことを確認してください。

dpm()ここ からの説明。

Drupal_set_message()を使用して、変数をページの「メッセージ」領域に出力します。この関数を使用して、サイトを実行するコードで作業しているときに1つ以上の変数を追跡できます。 DevelモジュールにはKrumoが付属しているため、出力はコンパクトで目立たなくなります。

dpm($input, $name = NULL)

何らかの理由でKrumoを使用していない場合は、$ nameパラメーターを使用して、dpm()への異なる呼び出しを区別できます。

Develをダウンロードして有効にしたら、 file_scan_directory()の実行に約10秒かかります からの回答をもう一度試してみてください。

8
Chapabu

テンプレートファイルに触れない(または持たない)関数内から印刷したい場合は、次のことを試してください。

$nid = 3;
$node = node_load($nid);
dpm($node);
print theme('status_messages'); 
5
Gavin Mcdonough

これは、ページ上のリソースが404を返すことが原因である場合があります。

Drupalは404ページをレンダリングし、その際にセッションからメッセージをフェッチ(およびクリア)して、表示されない404ページにそれらを配置します。次に、メインページがメッセージをフェッチしても、何も残っていません。

ネットワークタブを開いて、404ステータスのリソースがあるかどうかを確認できます。

ここでの簡単な解決策は、settings.phpでこの行のコメントを外して高速404を有効にすることです。

# drupal_fast_404();

SlakeFistcrunchによって提案されているように、ここで別の良い解決策は devel_debug_log を使用することです。

3
Felix Eve

AJAXの場合、メッセージが切り取られたり、機能しないことがあります。

より信頼できる方法は、次のようにすることです(その後、終了後に削除します)。

_var_dump($data); die();
_

または、 dd() (Develの一部でもある)を使用できます。

_dd(func_get_args());
_

次に、(一時フォルダ内の)ログファイルを確認します。

_$ tail -f /tmp/drupal_debug.txt
_

上記の方法を使用すると、より便利で迅速になり、現在のサイトのレンダリングを中断することなく、AJAXまたはその他の要求をサポートできます。


それでもdpm()が好きな場合は、kint()も使用してみてください(含まれているKintサブモジュールを有効にして、これらの変数をきれいに出力してください)。

2
kenorb

一部のdpm()呼び出しだけが機能しない場合は、dpm()のクラッシュが原因である可能性があります。次のシナリオでカスタムフォーム送信ハンドラーで発生するのを見ました。

_function mymodule_formid_submit($form, &$form_state) {
  dpm($form_state);
}
_

エラー状態はdpm()の例外ハンドラーによってキャッチされたと思います。ページが正常に表示され、WSODも何かも表示されず、dpm()メッセージも表示されなかったためです。 ddl($form_state) を使用すると、Devel Debug Logモジュールによって生成されたレポート内の対応するオブジェクトを監視するときに、ブラウザがメモリを最大限に消費するため、エラーはおそらく検出されない再帰です。

回避策として、dpm($form_state['values'])dpm(array_keys($form_state))のように、オブジェクトの(関連する)部分のみを出力してみてください。

1
tanius