Изменить шаблон (лейаут) для части сайта в Yii2

В Yii2 все страницы отрисовываются внутри базового шаблона (лейаута) — app\views\layouts\main.php. Однако, можно оторвать как контроллер, так и метод от шаблона.

Чтобы все методы контроллера использовали отдельный шаблон, необходимо явно задать в контроллере атрибут $layout:

class SomeController extends Controller
{
    public $layout = 'another-layout';
    /* остальной код контроллера */
}

Если вместо имени шаблона передать false, то шаблон не будет применён ни к одному действию контроллера. Значение по умолчанию — null — используется для наследования шаблона модуля (документация).

Если нужно отвязать от базового шаблона отдельное действие контроллера, то меняем

$this->render(['view' compact('foo', 'bar')])

на

$this->renderPartial(['view' compact('foo', 'bar')])

renderPartial() отрисует переданные данные, не добавляя их в шаблон проекта.

Share on VKShare on FacebookPin on PinterestTweet about this on Twitter