2011-12-07 10 views
1

Drupal 7でカスタムエラーページを作成したいと思います。set_messageのようなものがありますが、エラーは記録されません。だから、フックや何かのようなエラーをキャッチすると、それをログに記録し、私のユーザーに人間のエラーを表示する?Drupalエラーページ

+0

がここに似た何かを見つけhttp://stackoverflow.com/questions/1705840/how-to-log-error -message-in-drupal –

+0

素晴らしい!ありがとう! – Michiel

+0

あなたのために働くかどうか私に教えてください。そうでない場合は、我々はより良​​いものに取り組むことができます –

答えて

1

あなたの目標は「エラーをキャッチしてログに記録し、ユーザーにエラーを表示する」ことです。

この場合、おそらくコードのブロックを実行しようとするTry/Catch機能があります。問題が発生した場合は、メッセージが表示されます。あなたは、ウォッチドッグ機能付きのDrupalのデータベース・ロギングシステムにエラーを記録することができ、あなたの特定のケースでは

は、必要に応じてhttp://api.drupal.org/api/drupal/includes--bootstrap.inc/function/watchdog/7

あなたはまた、あなたが次にhttp://php.net/manual/en/function.error-log.php

に続けることができるPHPのerror_logが同様に見にこれをログに記録できすでに把握しているdrupal_set_message関数を使用してユーザーにメッセージを表示します。

あなたはこのようになります達成しようとしているもののための最終的なコード:

try { 

    // RUN YOUR CUSTOM CODE HERE 

} catch (Exception $e) { 

    // Record the error Drupal's database log 
    watchdog('error_page', $e->getMessage()); 

    // Record the error to PHP's error_log 
    error_log($e->getMessage()); 

    // Display a message to the user 
    drupal_set_message("We're sorry, but we couldn't find the page you were looking for.", 'error'); 
} 
+0

これはすばらしい答えです!できるだけ早く試してみるよ! – Michiel

+0

私が見る限り、それはトリックをした!ありがとう! – Michiel

+0

恐ろしいことに、問題が解決しました。 –

0

drupal_get_messages()を使用して、エラータイプのメッセージに対して反復処理を行う配列をフェッチすることができます。

私はあなたの質問を100%理解したとは確信していませんが、drupal_set_message()を参照して以来、これはあなたが探していたものだと思いました。

あなたはhook_init()でそれを処理し、そこにメッセージがあるかどうか調べることができます。

エラーをリダイレクトすると、フォームなどのデフォルトのDrupal機能が破損する可能性があります。