Trucos y consejos
Editores e IDE
Escriba las plantillas en un editor o IDE con soporte para Latte. Será mucho más agradable.
- PhpStorm: instale el plugin de Latte en
Settings > Plugins > Marketplace - VS Code: instale Nette Latte + Neon, Nette Latte templates o el más reciente plugin Nette for VS Code
- NetBeans IDE: el soporte nativo para Latte viene incluido en la instalación
- Sublime Text 3: busque e instale el paquete
Netteen Package Control y elija Latte enView > Syntax - en editores más antiguos, use el resaltado de Smarty para los archivos
.latte
El plugin para PhpStorm es muy avanzado y sabe ofrecer excelentes sugerencias de código PHP. Para un funcionamiento óptimo, use plantillas tipadas.

También encontrará soporte para Latte en el resaltador de código web Prism.js y en el editor Ace.
Latte dentro de JavaScript o CSS
Latte se puede usar muy cómodamente dentro de JavaScript o CSS. Pero ¿cómo evitar que Latte tome por error código JavaScript o estilos CSS por etiquetas de Latte?
<style>
/* ERROR: lo interpreta como la etiqueta {color} */
body {color: blue}
</style>
<script>
// ERROR: lo interpreta como la etiqueta {id}
var obj = {id: 123};
</script>
Opción 1
Evite las situaciones en las que una letra sigue inmediatamente a {, por ejemplo insertando antes un espacio, un
salto de línea o unas comillas:
<style>
body {
color: blue
}
</style>
<script>
var obj = {'id': 123};
</script>
Opción 2
Desactive por completo el procesamiento de las etiquetas de Latte dentro de un elemento con n:syntax:
<script n:syntax="off">
var obj = {id: 123};
</script>
Opción 3
Cambie dentro del elemento la sintaxis de las etiquetas de Latte a llaves dobles:
<script n:syntax="double">
var obj = {id: 123}; // esto es JavaScript
{{if $cond}} alert(); {{/if}} // esto es una etiqueta de Latte
</script>
En JavaScript, no ponga la variable entre comillas.
Sustituto de la cláusula use en Latte
¿Cómo sustituir en Latte las cláusulas use que se usan en PHP, para no tener que escribir el espacio de nombres
al acceder a una clase? Ejemplo en PHP:
use Pets\Model\Dog;
if ($dog->status === Dog::StatusHungry) {
// ...
}
Opción 1
En lugar de la cláusula use, guarde el nombre de la clase en una variable y use después $Dog en
lugar de Dog:
{var $Dog = Pets\Model\Dog::class}
<div>
{if $dog->status === $Dog::StatusHungry}
...
{/if}
</div>
Opción 2
Si el objeto $dog es una instancia de Pets\Model\Dog, se puede usar
{if $dog->status === $dog::StatusHungry}.
Generar XML en Latte
Latte puede generar cualquier formato de texto (HTML, XML, CSV, iCal, etc.), pero para escapar correctamente los datos
mostrados debemos indicarle qué formato estamos generando. Para eso sirve la etiqueta {contentType}.
{contentType application/xml}
<?xml version="1.0" encoding="UTF-8"?>
...
Después podemos generar, por ejemplo, un sitemap de forma parecida:
{contentType application/xml}
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" >
<url n:foreach="$urls as $url">
<loc>{$url->loc}</loc>
<lastmod>{$url->lastmod->format('Y-m-d')}</lastmod>
<changefreq>{$url->frequency}</changefreq>
<priority>{$url->priority}</priority>
</url>
</urlset>
Pasar datos desde una plantilla incluida
Las variables creadas con {var} o {default} en una plantilla incluida existen solo dentro de esa
plantilla y no están disponibles en la plantilla que la incluye. Si quiere devolver algún dato de la plantilla incluida a la que
la incluye, una opción es pasar un objeto a la plantilla e insertar los datos en él.
Plantilla principal:
{* crea un objeto vacío $vars *}
{var $vars = (object) null}
{include 'included.latte', vars: $vars}
{* ahora contiene la propiedad foo *}
{$vars->foo}
Plantilla incluida included.latte:
{* escribe datos en la propiedad foo *}
{var $vars->foo = 123}