Los templates constituyen la capa mas externa de la vista que se mostrará luego de ejecutar una acción del controlador, de manera que permite establecer el formato de presentación apropiado para la vista.
Cuando se habla de formato no se refiere únicamente al tipo de documento, si no también a elementos como cabeceras y menus. Por ende el template esta compuesto por aquellos elementos que en conjunto son utilizados para la presentación de diversas vistas, dando de esta manera un formato de presentación reutilizable.
4.3.1 ¿Como crear un Template?
Para construir un nuevo template se debe crear un archivo con extensión .phtml en el directorio views/_shared/templates/ el cual debe corresponder con el nombre del template.
Como se explicó anteriormente al inicio del capítulo “La Vista”, el manejador de vistas utiliza el patrón de diseño de «vista en dos pasos». En el primer paso, se procesa la vista de acción, luego la vista de acción procesada se almacena en el buffer de salida y en el segundo paso se procesa el template.
En consecuencia, como la vista de acción procesada se acumula en el buffer de salida es necesario invocar el método View::content() en el lugar donde se desea mostrar la vista, tal como se indicó en la sección 4.2.
Ejemplo:
views/_shared/templates/ejemplo.phtml
<!DOCTYPE html> |
4.3.2 ¿Como utilizar un template?
Para seleccionar el template a utilizar se debe invocar el método View::template() pasando como argumento el template a utilizar. Ejemplo:
En el controlador:
<?php |
Asimismo es posible indicar al manejador de vistas que no utilice ningún template y por lo tanto muestre solamente la vista, para esto se debe pasar NULL como argumento a View::template().
<?php |
4.3.3 Pasando datos al template
Como se vio en la sección “Pasando datos a la vista”, los atributos públicos del controlador se cargan como variables de ámbito local en la vista, como mostrar el template, constituye el segundo paso para mostrar la vista completa, los atributos públicos del controlador estarán de igual manera cargados como variables de ámbito local en el template. Ejemplo:
En el controlador saludo_controller.php
<?php |
En el template saludo.phtml
<!DOCTYPE html> |