YII, как обрабатывать пользовательскую страницу ошибки 404 вместе с другими страницами ошибок

Я хочу отобразить страницу с ошибкой 404, потому что я создал файл error404.php в папке protected/view/system.

По умолчанию у меня есть Sitecontroller, и он содержит функцию действия при ошибке, как показано ниже

public function actionError()
{
    if($error=Yii::app()->errorHandler->error)
    {

        if(Yii::app()->request->isAjaxRequest)
            echo $error['message'];
        else
            $this->render('error', $error);
    }
}

внутри основного файла конфигурации он определяется как

    'errorHandler'=>array(
        // use 'site/error' action to display errors
        'errorAction'=>'site/error',
    ),

моя проблема в том, что мне нужно настроить только страницу 404, остальную часть ошибки мне нужно обработать так, как она обрабатывается функцией ошибки sitecontroller. Но я не мог найти способ сделать это. Если предположить, что я удаляю 'errorAction'=>'site/error' из основного файла конфигурации, тогда он показывает ошибку 404, вызывая

        throw new CHttpException(404, 'Page not found');

но при этом я могу видеть только страницу без макета, а другие пользовательские ошибки обрабатываются так же, как 404, хотя это не так. Я читал руководство много раз, но я все еще не могу решить эту проблему.

11
задан wolvorinePk 5 August 2012 в 10:05
поделиться