Yii2 свой шаблон ошибки

158
02 марта 2018, 18:05

В общем есть тема basic, шаблонизатор Smarty, в ней у меня страница ошибки - error.tpl, в контроллере я прописал

public function actions()
{
    return [
        'error' => [
            'class' => 'yii\web\ErrorAction',
            'view' => '@app/themes/basic/error.tpl'
        ],
    ];
}

Также я пробовал

'@app/views/error.tpl'
'@app/themes/basic/error.php'
'@app/view/error.php'

Но yii абсолютно пофиг на это, выводит стандратное

Not Found (#404) Страница не найдена. The above error occurred while the Web server was processing your request.

Please contact us if you think this is a server error. Thank you.

Самое интересное что в самом классе https://github.com/yiisoft/yii2/blob/master/framework/web/ErrorAction.php#L139 нет по сути никакой обработки ошибок, т.е. я должен гадать указан ли правильно путь к файлу или нет, например... Но не будем о грустном. Собственно вопрос - как заставить это работать ?

Answer 1

Добрый вечер. Добрый день. Покажу на примере шаблона basic. В app\controllers\SiteController комментируем следующий код

    public function actions()
    {
      return [
        //'error' => [
        //    'class' => 'yii\web\ErrorAction',
        //],
      ];
    }

и добавляем своё действие в этот же контроллер

public function actionMyerror()
{
    $exception = Yii::$app->errorHandler->exception;
    if ($exception !== null) {
        $statusCode = $exception->statusCode;
        $name = $exception->getName();
        $message = $exception->getMessage();
        $this->layout = 'main';
        return $this->render('error', [
            'exception' => $exception,
            'statusCode' => $statusCode,
            'name' => false,
            'message' => $message
        ]);
    }        
}

в конфигурационном файле app\config\web.php указываем своё действие для обработок ошибок

    'errorHandler' => [
        'errorAction' => 'site/myerror',
    ],

в файле app\views\site\error выводим только код ошибки

<h1><?= Html::encode($statusCode) ?></h1>

Всё. p.s. Шаблон basic взял стандартный, сразу после установки.

READ ALSO
Значение переменной в урл

Значение переменной в урл

Работаю в wordpressУ меня есть переменная с именем города

153
Как заменить версию php в консоли?

Как заменить версию php в консоли?

Mac OS High Siera Установил php 72 с помощью brew

135
.htaccess переадресация с папки на поддомен

.htaccess переадресация с папки на поддомен

Подскажите как сделать так, чтобы при заходе по адресу http://sitecom/sub или http://www

134
Что изучить web-программисту? [требует правки]

Что изучить web-программисту? [требует правки]

Учусь на третьем курсеЧерез год начнется взрослая жизнь и надо бы искать работу :с

139