我如何显示自定义错误页面而不是完整性约束违规 - yii \ db \ IntegrityException错误Yii 2
我如何在Yii 2.0中捕获并抛出异常
答案 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');
}
},
],