Содержание
При построении вебсайта с использованием слоев в структуре MVC Zend Framework'а, ваши скрипты представлений
будут фактически представлять из себя снипеты с кодом HTML для соответствующего действия.
Например, если было вызвано действие "/user/list", то можно создать скрипт
представлений, который будет обходить в цикле пользователей и генерировать неупорядоченный список:
<h2>Users</h2>
<ul>
<?php if (!count($this->users)): ?>
<li>No users found</li>
<?php else: ?>
<?php foreach ($this->users as $user): ?>
<li>
<?php echo $this->escape($user->fullname) ?>
(<?php echo $this->escape($user->email) ?>)
</li>
<?php endforeach ?>
<?php endif ?>
</ul>
Это не валидная страница, это HTML снипет; тут отсутствует объявление DOCTYPE, тэги HTML и BODY. Вопрос в том, где все это будет объявлено?
В ранних версиях Zend Framework, разработчики часто создавали скрипты представлений для "header" и "footer", в которых содержались эти объявления, затем в каждом скрипте представлений подключали эти части. Хотя такой метод работает, но его сложно отлаживать в дальнейшем, или строить сложный контент, вызывая различные действия.
Паттерн Двухшаговая шаблонизация помогает во многих вопросах, указанных выше. В этом паттерне сначала создается представление "приложения", затем оно инъектируется в представление страницы, которая и показывается клиенту. Представление страницы может представлять собой шаблон или слой, иметь какие-то общие элементы для всех страниц.
В Zend Framework Zend_Layout реализует паттерн двухшаговая шаблонизация.