Глава 6. Знакомство с Zend_Layout

Содержание

6.1. Введение
6.2. Используя Zend_Layout
6.2.1. Конфигурация слоя
6.2.2. Создай скрипт слоя
6.2.3. Доступ к объекту слоя
6.2.4. Другие операции
6.3. Zend_Layout: Выводы

6.1. Введение

При построении вебсайта с использованием слоев в структуре 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 реализует паттерн двухшаговая шаблонизация.