Как я могу перенаправить на определенную страницу, когда соединение с базой данных не удается в Yii? - PullRequest
7 голосов
/ 10 сентября 2011

Я не хочу видеть сообщение об ошибке Yii при сбое соединения с базой данных.Как я могу перенаправить на определенную страницу, когда соединение с базой данных не удается с Yii Framework?Спасибо.

Ответы [ 2 ]

7 голосов
/ 10 сентября 2011

Чтобы перехватить все CDbConnection ошибки, вам нужно включить обработчик ошибок в config / main.php

'components'=>array('errorHandler'=>array('errorAction'=>'site/error', ), ),

Затем в вашем контроллере (или абстрактном базовом классе для всех ваших контроллеров) вам нужно определить действие для выполнения перенаправления.

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(); }

В качестве альтернативы вы можете просто сделать ваши собственные представления:

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

Подробнее см. Yii docs .

1 голос
/ 10 сентября 2011

вы можете сделать что-то вроде:

try { 
    $connection=new CDbConnection($dsn,$username,$password);
} catch(Exception $e) {
    $this->redirect(array('controller/action'));
}

вы также можете передать дополнительную информацию с помощью перенаправления, см. здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...