如何在yii 2中设置IntegrityException的错误页面

时间:2016-08-10 17:53:44

标签: php yii2

我如何显示自定义错误页面而不是完整性约束违规 - yii \ db \ IntegrityException错误Yii 2

我如何在Yii 2.0中捕获并抛出异常

1 个答案:

答案 0 :(得分:0)

尝试以下方法。在事件\yii\web\Response::EVENT_BEFORE_SEND上添加自定义回调函数,您可以在其中检查当前异常,然后重新定义响应内容或在任何位置重定向用户。

例如,您可以在配置中添加如下内容:

'response' => [
    'class' => 'yii\web\Response',
    'on beforeSend' => function ($event) {
        $exception = \Yii::$app->errorHandler->exception;
        /* @var \yii\web\Response $response */
        $response = $event->sender;

        if ($response->isServerError && is_a($exception, \yii\db\IntegrityException::class)) {
            // here you can define custom message to show
            $response->data = 'Integrity exception: ' . $exception->getMessage();

            // or render custom view
            //$response->data = \Yii::$app->getView()->render('@app/views/site/error.php', ['exception' => $exception]);

            // or redirect...
            //$response->redirect('https://www.google.ru/?gws_rd=ssl#newwindow=1&q=Integrity+exception+Yii2');
        }
    },
],