Подтвердить что ты не робот

Yii2 Как разбить файл макета для разделения верхнего и нижнего колонтитула?

Я новичок в YII2, поэтому это может быть очень простой вопрос.

Я установил начальное приложение. У меня есть настройка темы для моего приложения YII2 /themes/standard

Теперь существует файл макета по умолчанию themes/standard/layouts/main.php - этот код html для верхнего и нижнего колонтитула

Я хочу разделить код заголовка на themes/standard/layouts/header.php и нижний колонтитул в другой файл

Я попробовал что-то вроде кода ниже в main.php

<?php $this->render("header"); ?>

попробовал это также

<?php $this->render("//layouts/header"); ?>

Но он не отображает содержимое. Я не хочу абсолютного пути, так как у меня есть тематика Можете ли вы помочь с этим?

4b9b3361

Ответ 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