krumo()/ dpm()が機能しない


8

これらの手順に従って、ノード送信フォームの外観を変更するためのカスタムモジュールとテンプレートがあります。

私のモジュールは3つの関数で構成されています:

  • A hook_form_alter()罰金に動作します
  • A hook_theme()何もするが、配列を返す、あなたが他のコードを入力しても、前にいないreturn(いないことを確認これは仕様の場合)
  • hook_preprocess_HOOK()現在空のA

dpm()同じ変数動作するhook_preprocess_HOOK()ものの、では何もしないようです。Drupalメッセージを設定しますが、それを読み取ることはできますが、展開または検査することはできません。krumo()Array: [n] items

私のテンプレートでは、print_r($form);期待どおりにフォーム配列を出力します。dpm('self-aware roomba');予想通り、「自己認識ルンバ」のDrupalメッセージを設定します。しかしdpm($form); 何もせず、エラーをスローしません。

私を除くすべてhook_form_alter()は、リンクされたチュートリアルに表示されているとおりです。全体hook_form_alter()を引き出して、それがなくても機能するかどうかを確認することさえしました。そうではありません。

何がdpm()/ krumo()無言で失敗するのですか?


Develモジュールはインストールされていますか?dpm()はDevelモジュールから来ています
Mohammad Ali Akbari 2012

はい、Develはインストールされています。dpm('self-aware roomba');それ以外の場合krumo()は機能せずArray: [n] items、も返されません。これは致命的なPHPエラーを引き起こし、ログが空になりません。
ベス

だからあなたのコードをあなたの質問に入れて、エラーを再現させてください;)
Mohammad Ali Akbari 2012

リンクされたチュートリアルのコードとまったく同じです。すべてを質問ウィンドウに投稿するには少し時間がかかります。すべてのコードはここにある:drupal.org/node/1092122
ベス

どの関数(どこ)でdpm()を試していますか?
Mohammad Ali Akbari 2012

回答:


6

私はこの問題に遭遇してきたdpm()いくつかの他のメッセージは、バックグラウンドで404リクエストによりアップ食べたと。

説明:

場合dpm()drupal_set_message()メッセージがでプリントアウトされる前に呼び出されtheme_status_messages()、その後、同じページ上でそれらを見ることが。

場合dpm()またはdrupal_set_message()後に呼び出されtheme_status_messages()、その後、それらのメッセージがで遅れで表示されてい$_SESSIONない次のリクエストまでtheme_status_messages()

一部のタイプのリクエストトリガーされませんtheme_status_messages()。たとえば、フォームの送信ではフォームの処理のみが行われ、その後リダイレクトが行われるため、メッセージはに残ります$_SESSION

また、同じビジター/クライアントからのリクエストでのみトリガーされます(これがクライアント固有のセッションに保存される理由です)。

ただし、バックグラウンドで発生する一部のリクエストはトリガーtheme_status_messages()され、メッセージを使い果たす可能性があります。

私の場合、これは不足している画像へのリクエストであり、結果として本格的なhtml 404ページのWITHメッセージが表示されました(そして、私は明らかにこれのどれも見ることができませんでした)。

解決:

解決策は、「高速404」機能をアクティブにすることでした。


これは本当に良いデバッグです。私の問題は、SVGファイル404ingがあったことでした。これは、デフォルトのファイル拡張子ではカバーされていません。素晴らしい答えをありがとう!
John McCollum、2014年

@zhilevan、あなたの研究に対する主な賛成票!Fast 404は何らかの理由でこれを解決しませんでしたが、404を修正するとすぐにdpm()が表示され始めたため、これが間違いなく原因でした。
joe_flash 2016年

1

これは私の友達をテストします

ob_start();
krumo($yourparameter);
$output = ob_get_contents();
ob_end_clean();
drupal_set_message($output);

これは機能しますが、同じログメッセージのいくつかのバージョンが表示されます。私が正しく理解している場合、これはすべて、出力をまとめてphpバッファ経由でレンダリングすることですか?そうですか?
大理石模様の2014年

@marblegravyはい、そうです
ユセフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.