Ответ 1
Чтобы иметь Nested Layouts
, вы можете использовать beginContent()
и endContent()
, как показано ниже (например, в макете main.php
):
<?php $this->beginContent('@app/views/layouts/header.php'); ?>
<!-- You may need to put some content here -->
<?php $this->endContent(); ?>
Все между begin
и end
будет заменено wit $content
в header.php
.
По официальному примеру Yii2
:
Иногда вам может понадобиться вложить один макет в другой. Например, в разных разделах веб-сайта вы хотите использовать разные макеты, в то время как все эти макеты имеют один и тот же базовый макет, который генерирует общую структуру страниц
HTML5
. Вы можете достичь этой цели, вызвавbeginContent()
иendContent()
в дочерних макетах следующим образом:
<?php $this->beginContent('@app/views/layouts/base.php'); ?>
...child layout content here...
<?php $this->endContent(); ?>
Как показано выше, содержимое детского макета должно быть заключено в пределах
beginContent()
иendContent()
. Параметр, переданный вbeginContent()
, указывает, что является родительским макетом. Это может быть файл макета или псевдоним. Используя вышеприведенный подход, вы можете развернуть макеты более чем на один уровень.
http://www.yiiframework.com/doc-2.0/guide-structure-views.html#nested-layouts