2011-12-07 156 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

可选您也可以登录该到PHP的error_log以及看到http://php.net/manual/en/function.error-log.php

然后,你可以继续使用您已经想出的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功能,如窗体。