Вложенные шаблоны

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
gli_mor
Сообщения: 5
Зарегистрирован: 2015.05.13, 15:37

Вложенные шаблоны

Сообщение gli_mor »

Добрый день! Подскажите пожалуйста. Хочу сделать вложенный шаблон, в дочернем шаблоне common.php прописал

Код: Выделить всё

<?php $this->beginContent('@backend/views/layouts/main.php');
echo $content;
 $this->endContent(); ?>
что должно быть прописано в main.php?
gli_mor
Сообщения: 5
Зарегистрирован: 2015.05.13, 15:37

Re: Вложенные шаблоны

Сообщение gli_mor »

Разобрался, в моём случае, дочерним шаблоном должен быть main.php, на который ссылается по умолчанию SiteController. В нём $this->beginContent('@backend/views/layouts/common.php');
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Вложенные шаблоны

Сообщение yiijeka »

Там же уже есть html.
В шаблоне main есть тоже $content; вот вместо него и выведется ваш common
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Вложенные шаблоны

Сообщение yiijeka »

Если у вас main в контроллере то он главный, а дочерним является common. Их можно вкладывать, как душе угодно, в зависимости от задачи.
gli_mor
Сообщения: 5
Зарегистрирован: 2015.05.13, 15:37

Re: Вложенные шаблоны

Сообщение gli_mor »

По умолчанию, siteController ссылается на main.php, в нём сделал

Код: Выделить всё

<?php $this->beginContent('@backend/views/layouts/common.php');
echo $content;
 $this->endContent(); ?>
, а в common.php

Код: Выделить всё

<!DOCTYPE html>
<head>
</head>
<body>
<?php $this->beginBody(); ?>
<?php echo $content ?>
<?php $this->endBody(); ?>
</body>
</html>
, в таком виде всё работает. P.S. возможно при этом main.php главный, но меня интересовала вложенность
Viloborod
Сообщения: 4
Зарегистрирован: 2017.01.27, 08:46

Re: Вложенные шаблоны

Сообщение Viloborod »

Я понимаю, что древнюю тему апаю, но все же.

https://github.com/yiisoft/yii2/blob/ma ... е-шаблоны-

В случае выше получилось так, что common.php стал главным, а main.php дочерним.

Предположим есть 2 контроллера, в каждом используется свой шаблон, к примеру main1.php и main2.php
то тогда должно быть так:

Код: Выделить всё

main1.php
<?php $this->beginContent('@backend/views/layouts/common.php');
<h1>Это шаблон 1</h1>
echo $content;
 $this->endContent(); ?>

Код: Выделить всё

main2.php
<?php $this->beginContent('@backend/views/layouts/common.php');
<h1>Это шаблон 2</h1>
echo $content;
 $this->endContent(); ?>

Код: Выделить всё

common.php
<!DOCTYPE html>
<head>
</head>
<body>
<?php $this->beginBody(); ?>
<?php echo $content ?>
<?php $this->endBody(); ?>
</body>
</html>
Ответить