【问题标题】:Yii2 - Catch require errorYii2 - 捕获需要错误
【发布时间】:2018-07-18 21:28:23
【问题描述】:

我有一个使用基本应用程序模板创建的 Yii2 应用程序。在 web.php 中,我需要一个名为 params.php 的文件。为了管理它,我使用文件存在函数:

if(file_exists(__DIR__ . '/params.php')) {
        $params = require __DIR__ . '/params.php';
    } 

我想抛出一个异常,以便显示 Yii 错误/调试页面。我试过了:

if(file_exists(__DIR__ . '/params.php')) {
        $params = require __DIR__ . '/params.php';
    } else {
        throw new Exception("Error", 1000);
    }

但是 Yii2 错误处理程序没有捕捉到它,我不确定此时是否已经可用。还有其他方法可以在这些页面上显示它吗?

【问题讨论】:

  • 如果您的文件丢失,它应该抛出一个致命错误,您的意思是如果没有文件,应用程序仍然可以工作吗?
  • @MuhammadOmerAslam 如果可能的话,我想显示一个对用户更友好的错误。现在我只显示一个带有消息的空白页面。

标签: exception yii2 yii2-basic-app


【解决方案1】:

错误处理程序在应用初始化时注册。 web.php 的配置在应用初始化之前加载(因为您需要先获取配置才能初始化应用),因此此时错误处理程序尚未准备好。

您可以通过使用事件来推迟加载参数:

return [
    'on beforeRequest' => function () {
        if (file_exists(__DIR__ . '/params.php')) {
            Yii::$app->params = require __DIR__ . '/params.php';
        } else {
            throw new Exception('Error', 1000);
        }
    }
    // rest of app config
];

【讨论】:

    猜你喜欢
    • 2013-07-07
    • 2020-08-16
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多