如果Yii中的数据库连接失败,如何重定向到特定页面?

use*_*084 7 php yii

我不希望在数据库连接失败时看到Yii错误消息.当数据库连接因Yii框架失败时,如何重定向到特定页面?谢谢.

hob*_*obs 7

要捕获所有 CDbConnection错误,您需要在config/main.php中启用错误处理程序

'components'=>array('errorHandler'=>array('errorAction'=>'site/error', ), ),
Run Code Online (Sandbox Code Playgroud)

然后,在您的控制器(或所有控制器的抽象基类)中,您需要定义一个操作来完成重定向.

public function actionError() {
    if($error=Yii::app()->errorHandler->error)
        if ( CDbException == $error->type) {
           $this->redirect(array("site/error_message")); }
    //  call the parent error handler, but something doesn't feel right about this:
    else
        parent::actionError(); }
Run Code Online (Sandbox Code Playgroud)

或者,您可以只渲染自定义视图:

public function actionError() {
    if($error=Yii::app()->errorHandler->error)
        if ( CDbException == $error->type) {
           $this->render('error', $error); } }
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅Yii文档.

  • 美丽的方法 (2认同)
  • 为什么不简化为:if($ error = Yii :: app() - > errorHandler-> error && CDbException == $ error-> type){...} ??? (2认同)