@akula22

Как в yii2 выводить ошибки в другом шаблоне?

Использую шаблон basic, сделал админку модулем, и в админке(Backend) все ошибки выводятся в public шаблоне
Подскажите как выводить все ошибки в backend шаблоне.
Сейчас все ошибки использую шаблон /view/layouts/main.php
а мне надо /backend/view/layouts/main.php
Во всех backendконтроллерах я использую
public $layout ='@app/modules/backend/views/layouts/main';
вот как это для ошибок прописать?
  • Вопрос задан
  • 959 просмотров
Пригласить эксперта
Ответы на вопрос 1
qonand
@qonand
Software Engineer
За обработку ошибок отвечает компонент приложения ErrorHandler, а за рендер самой страницы ошибки экшен указанный в параметре errorAction компонента. Соответственно при рендере страницы ошибки используется слой указанный в контроллере на который ссылается errorAction. Поэтому в самом простом варианте решения Вы можете определять слой в этом месте.

Например:
Конфигурация приложения:
// ...
'components' => [
    // ...
    'errorHandler' => [
        'errorAction' => 'site/error',
    ],
]


Контроллер
namespace app\controllers;

use Yii;
use yii\web\Controller;

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

public function beforeAction($action)
{
    if ($action == 'error' && Yii->app->user->isGuest) {
        $this->layout = '@app/modules/backend/views/layouts/main';
    }
    return parent::beforeAction($action);
}
}


но повторюсь это самый простой вариант из множества
Ответ написан
Ваш ответ на вопрос

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

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