Как переподключать страницу ошибок в зависимости от статуса ошибок?

У меня проблема в том что я не могу переподключить страницу ошибок. У меня есть 404 страница и 500. Что я делал и что получилось. По документации я посмотрел конфиги frontend2/config/main.php. Там стоит
'errorHandler' => [
            'errorAction' => 'site/error',
        ],

В контроллере
namespace frontend2\controllers;
use yii\web\Controller;

class SiteController extends FrontendController
...
 /**
     * @inheritdoc
     */
    public function actions()
    {
        return [
            'error' => [
                'class' => 'yii\web\ErrorAction',
            ],
        ];
    }
/**
     * @brief Страница ошибки
     * @return string
     */
    public function actionError()
    {
        $exception = Yii::$app->errorHandler->exception;
        if ($exception !== null) {
            if ($exception->statusCode == 404) {
                return $this->render('404', ['exception' => $exception]);
            } else if ($exception->statusCode == 404) {
                return $this->render('500', ['exception' => $exception]);
            } else {
                return $this->render('error', ['exception' => $exception]);
            }
        }
    }
}

Но все равно выходит то что указывается error.php При этом в actionError он даже не заходит, пробовал делать var_dump('Hello');die()
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Добрый день.
В конфигурации укажите путь к своему представлению для вывода ошибок. В самом представлении проверяйте какой статус ошибки и в зависимости от этого выводите содержимое.
// в конфигурационном файле
        'errorHandler' => [
            'errorAction' => 'path/to/error/view',
        ],

// в Вашем файле вывода ошибок
if($exception->statusCode == 404){
  $this->title => 'Текст заголовка';
  // остальные переменные
}
if($exception->statusCode == 500){
  $this->title => 'Текст заголовка';
  // остальные переменные
}
// остальной код файла
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mosesfender
@mosesfender
Меланхолик, параноик, падал с коек
Ну так ему же указана yii\web\ErrorAction.
Сделай свой frontend\components\ErrorAction, и её укажи.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы