Модуль макета страницы Zend Framework — Zend_Layout — можно использовать вместе с MVC или отдельно. В этой статье обсуждается только использование MVC.
1. Скрипт макета
создает папку макетов в папке application/views. Код основного скрипта макета Layout.phtml выглядит следующим образом:
<?php echo $this->doctype('XHTML1_STRICT') ?>
<html>
<голова>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php echo $this->headTitle() ?>
<?php
$this->headLink()->appendStylesheet("/styles/main.css");
// добавляем больше ссылок...
?>
<?php echo $this->headLink() ?>
</голова>
<тело>
<div id="header">
<?php echo $this->partial('header.phtml') ?>
</div>
<таблица>
<тр>
<td valign=top>
<div id="leftcolumn">
<?php echo $this->partial('leftcolumn.phtml') ?>
</div>
</td>
<td valign=top>
<div id="содержание">
<?php echo $this->layout()->content ?>
</div>
</td>
</tr>
</таблица>
<div id="нижний колонтитул">
<?php echo $this->partial('footer.phtml') ?>
</div>
</тело>
</html>
Помимо Layout.phtml вам также необходимо написать такие файлы, как header.phtml, leftcolumn.phtml, footer.phtml и main.css.
В документации Zend Framework используется представление для представления применения макета страницы.
2. Установите макет страницы.
Установить макет страницы в MVC очень просто. Отредактируйте html/index.php и добавьте следующие две строки кода:
/** Setuplayout*/.
require_once 'Zend/Layout.php';
Zend_Layout::startMvc($rootPath . '/application/views/layouts');
Примечание. После запуска макета страницы необходимо настроить существующие страницы и удалить ненужные элементы HTML, такие как <header> <title> <body> Подождите, пока удалят. Кроме того, вы можете установить заголовок страницы через $this->headTitle().
Изменить макет страницы также очень просто, достаточно использовать в контроллере следующий код:
$this->_helper->layout->setLayout('new_layout');
Если все действия контроллера используют один и тот же макет страницы, который используется. может быть установлен через функцию инициализации контроллера:
public function init() {
родитель::init();
$this->_helper->layout->setLayout('new_layout');
}