Las plantillas en Zend Framework 2 nos permiten definir una pagina maestra, común a todas las páginas, que tenga elementos que necesitan todas las paginas por ejemplo un encabezado, los ficheros css y js, el pie de página, etc. En ella se “imprimen” las vistas de nuestra aplicación.
Las plantillas se crean en el directorio indicado en la imagen.
Los métodos que vamos a ver a continuación pueden ser utilizados en cualquier vista, para actualizar por ejemplo el titulo o añadir ficheros css, de la página sin importar que sean invocados en el body.
Ejemplo de plantilla:
<?php //Cargamos el doctype que tenemos configurado echo $this->doctype(); ?> <html lang="es_ES"> <head> <?php //Cargamos el juego de caracteres echo $this->headMeta()->setCharset('utf8')?> <?php //Asignamos el titulo de la página echo $this->headTitle($this->title)?> <?php //echo $this->headMeta()->appendName('keywords', 'framework, PHP, productivity');?> <?php //echo $this->headMeta()->setProperty('og:title', 'my article title');?> <?php //echo $this->headMeta()->setProperty('og:type', 'article');?> <?php //Asignamos hojas de estilo echo $this->headLink()->prependStylesheet($this->basePath().'/css/estilos.css')?> <?php //echo $this->headStyle()?> <?php //Incluimos ficheros javascript echo $this->headScript()->prependFile($this->basePath().'/js/jquery.min.js')?> </head> <body> <header> <h1>Encabezado</h1> </header> <div class="content"> Saludo : <?php //Mostramos el parámetro pasado echo $this->saludo?> <?php //Aqui se muestra el contenido de la vista echo $this->content?> </div> <footer>© Victor Robles</footer> <?php echo $this->inlineScript() ?> </body> </html>
El controlador
<?php namespace Application\Controller; use Zend\Mvc\Controller\AbstractActionController; use Zend\View\Model\ViewModel; class PruebasController extends AbstractActionController{ public function indexAction(){ return new ViewModel(); } public function verProductoDosAction(){ $view=new ViewModel(); //Indicamos que layout va a utilizar este método $this->layout('layout/pruebas'); //Le pasamos un parámetro $this->layout()->saludo="Hola como estas"; //Establecemos el titulo de la página $this->layout()->title="Soy el titulo de una plantilla"; //Renderizamos la vista return $view; } public function verAjaxAction(){ $view=new ViewModel(); //Recibimos datos sin estilos, ideal cuando usemos ajax $view->setTerminal(true); return $view; } }
El método verAjaxAction no carga los estilos
Para cambiar la plantilla por defecto que trae Zend Framework 2 tenemos que dirigir al fichero de configuración de nuestro modulo y simplemente sustituimos el layout por defecto por el nuestro.
Más información:
http://framework.zend.com/manual/2.2/en/modules/zend.view.quick-start.html