4.3 Template

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>
<html>
<head>
<title>Template de Ejemplo</title>
</head>
<body>
<h1>Template de Ejemplo</h1>
<?php View::content() ?>
</body>
</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
class SaludoController extends AppController {
public function hola(){
// Selecciona el template ‘mi_template.phtml’
View::template(‘mi_template’);
}
}

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
class SaludoController extends AppController {
public function hola(){
// No utilizar template
View::template(NULL);
}
}

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
class SaludoController extends AppController {
public function hola(){
Flash::valid(‘Hola Mundo’);
// Pasando el titulo para la página
$this->titulo = ‘Saludando al Mundo’;
/* No se utilizará vista, por lo tanto la
salida será del buffer y template */
View::select(NULL, ‘saludo’);
}
}

En el template saludo.phtml

<!DOCTYPE html>
<html>
<head>
<title><?php echo $titulo ?></title>
</head>
<body>
<h1>Template de Saludo</h1>
<?php View::content() ?>
</body>
</html>

Leave a Reply

Your email address will not be published. Required fields are marked *