Заметки обо всем

Yii2. Модули. Делаем вывод ошибки для модуля с шаблоном отличным от основного шаблона приложения

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

Для начала, у модуля, конечно должен быть свой дизайн шаблона, путь к которому прописывается в базовом контроллере модуля:

public $layout = '@app/modules/blog/views/layout/blog';

Тем не менее, это никак не повлияет на то, что ошибка по прежнему будет выводится в шаблоне базовом для всего приложения. Для того, чтобы ошибки в контроллерах модуля выводились в шаблоне этого модуля, нужно отредактировать еще несколько файлов

1. Основной класс модуля в Module.php

Добавляем метод init(), если еще не добавлен и прописываем action, который будет отвечать за вывод ошибки в модуле:

Yii::$app->errorHandler->errorAction = 'blog/blog/error';
2. Добавляем в контроллер вышеуказанный action
public function actions()
{
    return [
        'error' => ['class' => ErrorAction::class],
        ...
3. Создаем нужный action и наследуем его от \yii\web\ErrorAction
class ErrorAction extends \yii\web\ErrorAction {}
4. Создаем view файл для вывода ошибок error.php

В вьюшке нам доступны переменные $name и $message для формирования сообщения об ошибки для пользователя.