我怎样才能显示自定义错误页,而不是完整性约束违规设置错误页面IntegrityException - 警予\ DB \ IntegrityException错误Yii中2如何在警予2
我如何能赶上和Yii中抛出的异常此2.0
我怎样才能显示自定义错误页,而不是完整性约束违规设置错误页面IntegrityException - 警予\ DB \ IntegrityException错误Yii中2如何在警予2
我如何能赶上和Yii中抛出的异常此2.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');
}
},
],
我的问题是,我怎么能用try&catch语句来做到这一点? –
@NarimanDelavary那么究竟是什么问题?至于我 - 这很简单,但实际的实现(你应该把你的try-catch块),这取决于你的需求。你甚至在你的问题的评论中有一个手册的链接。你有没有试图自己做? – oakymax
感谢Maxim.My问题解决 –
http://www.yiiframework.com/doc-2.0/guide-runtime-handling-errors.html – yafater
这不是我的答案 –