Tabla de contenidos
Al construir un sitio web usando las capas MVC de Zend Framework, sus
scripts de vista normalmente serán solo fragmentos de HTML relativos a la
acción solicitada. Por ejemplo, si tuviera la acción "/user/list",
podría crear un script de vista que recorra los usuarios y presente una
lista sin ordenar:
<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>
Dado que esto es solo un fragmento de HTML, no es una página válida; le faltan una declaración DOCTYPE, y las etiquetas de apertura HTML y BODY. Entonces, la pregunta es, ¿dónde se crearán estas?
En las primeras versiones de Zend Framework, los desarrolladores a menudo creaban scripts de vista de "cabecera" y "pie de página" que contenían estos elementos, y luego los renderizaban en cada script de vista. Aunque esta metodología funcionaba, también dificultaba la refactorización posterior, o la construcción de contenido compuesto llamando a múltiples acciones.
El patrón de diseño Two Step View resuelve muchos de los problemas presentados. En este patrón, la vista de "aplicación" se crea primero, y luego se inyecta en la vista de "página", que se presenta entonces al cliente. La vista de página puede considerarse como la plantilla o layout de todo el sitio, y contendría elementos comunes usados a través de varias páginas.
Dentro de Zend Framework, Zend_Layout implementa el patrón
Two Step View.