El módulo de diseño de página de Zend Framework, Zend_Layout, se puede utilizar junto con MVC o solo. Este artículo solo analiza el uso con MVC.
1. El script de diseño
crea una carpeta de diseños en aplicación/vistas. El código del script de diseño principal layout.phtml es el siguiente:
<?php echo $this->doctype('XHTML1_STRICT') ?>
<html>
<cabeza>
<meta http-equiv="Tipo de contenido" content="text/html; charset=utf-8" />
<?php echo $this->headTitle() ?>
<?php
$this->headLink()->appendStylesheet("/styles/main.css");
//agregar más enlaces...
?>
<?php echo $this->headLink() ?>
</cabeza>
<cuerpo>
<div id="encabezado">
<?php echo $this->partial('header.phtml') ?>
</div>
<tabla>
<tr>
<td valign=arriba>
<div id="columna izquierda">
<?php echo $this->partial('leftcolumn.phtml') ?>
</div>
</td>
<td valign=arriba>
<div id="contenido">
<?php echo $this->diseño()->contenido ?>
</div>
</td>
</tr>
</tabla>
<div id="pie de página">
<?php echo $this->partial('pie de página.phtml') ?>
</div>
</cuerpo>
</html>
Además de layout.phtml, también necesita escribir archivos como header.phtml, leftcolumn.phtml, footer.phtml y main.css.
La documentación de Zend Framework utiliza una vista para representar la aplicación del diseño de página.
2. Configurar el diseño
de la página en MVC es muy simple. Edite html/index.php y agregue las siguientes dos líneas de código:
/** Setuplayout*/.
require_once 'Zend/Layout.php';
Zend_Layout::startMvc($rootPath . '/application/views/layouts');
Nota: Después de iniciar el diseño de la página, debe ajustar las páginas existentes y eliminar elementos html innecesarios, como <encabezado> <título> <cuerpo > Espere a eliminar. Además, puede establecer el título de la página mediante $this->headTitle().
Cambiar el diseño de la página también es muy simple, simplemente use el siguiente código en el controlador:
$this->_helper->layout->setLayout('new_layout');
Si todas las acciones de un controlador usan el mismo diseño de página, cual se puede configurar a través de la función de inicialización del controlador:
public function init() {
padre::init();
$this->_helper->layout->setLayout('new_layout');
}