отдельный заголовок, содержимое и нижний колонтитул в yii - PullRequest
0 голосов
/ 06 февраля 2012

У меня есть форма для входа в раздел заголовка сайта. Если пользователь вошел в систему, то будет отображена информация о профиле пользователя. Вопрос в том, как разделить нижний колонтитул и контент на разные представления и вызвать их из одного контроллера? Или, может быть, есть другое решение ... Спасибо за помощь.

Ответы [ 4 ]

3 голосов
/ 06 февраля 2012

В вашем заголовке вы можете написать что-то вроде этого.

<?php if(Yii::app()->user->getId()): ?>
    <?php $this->renderPartial('//world/_header_user')); ?> 
 <?php else: ?>
    <?php $this->renderPartial('//world/_header_guest')); ?> 
 <?php endif; ?>
2 голосов
/ 02 апреля 2013

Используя шаблон проектирования Model-View-Controller (MVC), внешний вид сайта на основе Yii естественным образом контролируется файлами View.Эти файлы представляют собой комбинацию HTML и PHP, которые помогают создать желаемый результат.Определенные страницы на сайте будут использовать определенные файлы просмотра.Фактически, файлы View спроектированы так, чтобы их можно было разбить на атомы, например, чтобы форма, используемая как для создания, так и для редактирования записи сотрудника, представляла собой собственный файл, и этот файл мог быть включен как create.php, так и update.php.Как и в большинстве вещей в ООП, реализация атомарной, разъединенной функциональности имеет большое значение для улучшения возможности повторного использования.Но отдельные файлы View являются лишь частью уравнения для рендеринга веб-страницы.Отдельные файлы представлений отображаются в файле макета.И хотя я упомянул макеты раз или два в своих работах на Yii, эта тема заслуживает отдельного поста.

Для ясности, макеты - это тип файла View.В частности, в то время как другие файлы View помещаются в каталог для соответствующего контроллера (т. Е. SiteController извлекает данные из views / site), файлы макетов размещаются в пределах views / layout.Но в то время как другие файлы View связаны с отдельными контроллерами (и, следовательно, с отдельными страницами), макеты являются общими, общими для всех страниц.Проще говоря, файл макета является родительской оболочкой для всей системы шаблонов сайта.Я объясню

ypu может видеть более подробную информацию

http://www.larryullman.com/2012/05/16/working-with-layouts-in-yii

1 голос
/ 06 февраля 2012

Самый простой способ - это использовать другой макет, который вы просто включаете при входе в систему. Если нет, то отображение партиалов / компонентов на основе Yii :: app () -> user-> isGuest также работает хорошо.

0 голосов
/ 06 февраля 2012

Ваше сгенерированное по умолчанию приложение Yii имеет родительский контроллер в protected / components / Controller.php.Если вам нужен доступ к дополнительным параметрам в макете, добавьте открытые свойства в Controller, установите их в своем дочернем контроллере и используйте их в файлах вида / макета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...