Изменение layout в yii2

Для всего сайта

  • Изменение шаблона всего сайта (через глобальные настройки)

В файле web.php надо добавить строку layout

$config = [
    'id' => 'basic',
    'language' => 'ru_RU',
    'layout' => '@app/views/layouts/new',
...

Для модуля

  • Изменение шаблона для модуля (через настройки - в config.php)
<?php
    ......
    'modules' => [
        'test' => [
            'class' => 'app\modules\test\Module',
            'layout' => '@app/views/layouts/new',
        ],
    ],
  • Изменение шаблона модуля в методе init (в файле Module.php модуля)
    public function init()
    {
      parent::init();
      $this->layout = '@app/views/layouts/new';
    }
    

Для контроллера

  • Изменение шаблона для всего контроллера (добавляем функцию в контроллер)
public function init()
{
    parent::init();
    $this->layout = '@app/views/layouts/new';
}

Для конкретного экшена контроллера

  • Изменение шаблона для отдельного действия контроллера
    public function actionIndex()
    {
      $this->layout = '@app/views/layouts/new';
      ...
    }
    
  • Изменение шаблона для отдельного действия контроллера во view
<?php
$this->layout = '@app/views/layouts/new';
{{ message }}

{{ 'Comments are closed.' | trans }}