【问题标题】:Drupal error pageDrupal 错误页面
【发布时间】:2012-01-15 02:47:22
【问题描述】:

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

【问题讨论】:

  • 在这里找到了类似的东西stackoverflow.com/questions/1705840/…
  • 让我知道它是否适合你。如果没有,那么我们可以做一些更好的事情
  • 你的问题有点混乱。您是说要捕获“set_message”报告的错误并将用户重定向到专用的错误页面吗?如果是这样,那可能会破坏许多默认的 drupal 功能。

标签: drupal


【解决方案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');
}

【讨论】:

  • 这是一个很好的答案!我会尽快尝试!
【解决方案2】:

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

我不确定我是否 100% 理解了您的问题,但由于您引用了 drupal_set_message(),我认为这可能就是您要找的。​​p>

您可以在 hook_init() 中处理它,检查那里的消息,如果发现任何消息,请对其进行处理。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多