Drupal错误页面

时间:2011-12-07 15:30:07

标签: drupal

我想在Drupal 7中创建一个自定义错误页面。有set_message之类的内容,但他们没有记录错误。那么是否有任何钩子或类似的东西来捕获错误,记录它并向我的用户显示人为错误?

2 个答案:

答案 0 :(得分:1)

您在上面说过,您的目标是“捕获错误,记录错误并向用户显示人为错误”。

在这种情况下,您可能正在寻找Try / Catch功能,它允许您尝试运行一段代码,如果出现问题,它将显示一条消息。

在您的特定情况下,您可以使用看门狗功能http://api.drupal.org/api/drupal/includes--bootstrap.inc/function/watchdog/7

将错误记录到Drupal的数据库记录系统

您也可以选择将此日志记录到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');
}

答案 1 :(得分:0)

drupal_get_messages()可用于获取数组以迭代消息的错误类型。

我不确定我对你的问题有100%的认识,但是因为你引用了drupal_set_message(),我认为这可能就是你想要的。

你可以在hook_init()中处理它,检查那里的消息,如果你找到了,可以用它做点什么。

重定向错误虽然可能会破坏默认的drupal功能,如表单。