Templates
Los templates permiten reutilizar el mismo código entre varias vistas.
Un ejemplo de la utilidad de los templates es cuando se necesita mostrar la misma información de forma consistente, en diferentes vistas. Por lo tanto, el uso de los templates puede ahorrar mucha codificación.
Un template no es más que un script php, cuyo nombre tiene sufijo ".template.php", y se ubica en el directorio de las vistas de una aplicación. Por ejemplo, un template de la aplicación "blog" que sirve para mostrar los detalles de entradas de blog, debería estar en: /apps/blog/views/entradaBlog/details.template.php.
Para utilizar un template dentro de una vista, se utiliza el helper template.
Una ejemplo de llamada a este helper podría ser:
Helpers::template( array("controller" => "entradaBlog",
"name" => "details",
"args" => array("entrada" => $e)
) );
Luego, para el template, aparecen declaradas las variables pasadas en el array args con los nombres que ahí se especifican. El template puede contener html, javascript, php, llamadas a helpers (incluso a otros templates).
El siguiente es el código del template, observar que la variable $entrada aparece declarada para el template (esto es porque en args se pasa la clave "entrada"):
<div class="entrada">
<div class="top">
<div class="left">
(<?php echo $entrada->getId(); ?>)
<?php echo Helpers::link( array(
"controller" => "entradaBlog",
"action" => "show",
"id" => $entrada->getId(),
"body" => $entrada->getTitulo()) ); ?>
</div>
<div class="right">
<?php echo $entrada->getFecha(); ?>
</div>
</div>
<div class="content">
<?php echo $entrada->getTexto(); ?>
</div>
<div class="bottom">
<div class="left">
<?php echo Helpers::link( array(
"controller" => "comentario",
"action" => "create",
"id" => $entrada->getId(),
"body" => DisplayHelper::message("blog.entrada.action.addComment")) ); ?>
</div>
<div class="right">
<?php echo DisplayHelper::message("blog.entrada.label.comments"); ?>:
<?php echo Helpers::ajax_link( array(
"action" => "getCommentsJSON",
"id" => $entrada->getId(),
"body" => "(".count($entrada->getComentarios()).")",
"after" => "after_".$entrada->getId(),
"before" => "before_".$entrada->getId() ) ); ?>
</div>
</div>
<div style="display:none;" id="ajax_comments_<?php echo $entrada->getId(); ?>"></div>
</div>
