Tipps und Tricks
Editoren und IDEs
Schreiben Sie Templates in einem Editor oder einer IDE mit Unterstützung für Latte. Es wird viel angenehmer.
- PhpStorm: installieren Sie das Latte-Plugin
unter
Settings > Plugins > Marketplace - VS Code: installieren Sie Nette Latte + Neon, Nette Latte templates oder das neueste Plugin Nette for VS Code
- NetBeans IDE: die Unterstützung für Latte ist bereits in der Installation enthalten
- Sublime Text 3: suchen und installieren Sie in Package Control das Paket
Netteund wählen Sie unterView > SyntaxLatte - in älteren Editoren verwenden Sie für
.latte-Dateien das Highlighting von Smarty
Das Plugin für PhpStorm ist sehr fortgeschritten und kann ausgezeichnete Vorschläge für PHP-Code liefern. Für optimale Funktion verwenden Sie typisierte Templates.

Unterstützung für Latte finden Sie auch im Web-Code-Highlighter Prism.js und im Editor Ace.
Latte in JavaScript oder CSS
Latte lässt sich sehr bequem innerhalb von JavaScript oder CSS verwenden. Wie vermeidet man aber Situationen, in denen Latte JavaScript-Code oder CSS-Styles irrtümlich für Latte-Tags hält?
<style>
/* FEHLER: wird als Tag {color} interpretiert */
body {color: blue}
</style>
<script>
// FEHLER: wird als Tag {id} interpretiert
var obj = {id: 123};
</script>
Möglichkeit 1
Vermeiden Sie Situationen, in denen unmittelbar nach { ein Buchstabe folgt, indem Sie davor zum Beispiel ein
Leerzeichen, einen Zeilenumbruch oder ein Anführungszeichen einfügen:
<style>
body {
color: blue
}
</style>
<script>
var obj = {'id': 123};
</script>
Möglichkeit 2
Schalten Sie die Verarbeitung von Latte-Tags innerhalb eines Elements mit n:syntax vollständig ab:
<script n:syntax="off">
var obj = {id: 123};
</script>
Möglichkeit 3
Stellen Sie die Syntax der Latte-Tags innerhalb des Elements auf doppelte geschweifte Klammern um:
<script n:syntax="double">
var obj = {id: 123}; // das ist JavaScript
{{if $cond}} alert(); {{/if}} // das ist ein Latte-Tag
</script>
Setzen Sie in JavaScript Variablen nicht in Anführungszeichen.
Ersatz für die use-Klausel in Latte
Wie ersetzt man in Latte die in PHP verwendeten use-Klauseln, damit man beim Zugriff auf eine Klasse nicht den
Namespace schreiben muss? Beispiel in PHP:
use Pets\Model\Dog;
if ($dog->status === Dog::StatusHungry) {
// ...
}
Möglichkeit 1
Speichern Sie statt der use-Klausel den Klassennamen in einer Variablen und verwenden Sie dann $Dog
statt Dog:
{var $Dog = Pets\Model\Dog::class}
<div>
{if $dog->status === $Dog::StatusHungry}
...
{/if}
</div>
Möglichkeit 2
Ist das Objekt $dog eine Instanz von Pets\Model\Dog, lässt sich
{if $dog->status === $dog::StatusHungry} verwenden.
XML in Latte erzeugen
Latte kann jedes Textformat erzeugen (HTML, XML, CSV, iCal usw.), damit es die ausgegebenen Daten aber korrekt escapt, müssen
wir ihm sagen, welches Format wir erzeugen. Dazu dient der Tag {contentType}.
{contentType application/xml}
<?xml version="1.0" encoding="UTF-8"?>
...
Auf ähnliche Weise können wir dann zum Beispiel eine Sitemap erzeugen:
{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>
Daten aus einem eingebundenen Template zurückgeben
Variablen, die in einem eingebundenen Template mit {var} oder {default} erzeugt werden, existieren
nur innerhalb dieses Templates und stehen im einbindenden Template nicht zur Verfügung. Wollen Sie Daten aus dem eingebundenen
Template zurück an das einbindende übergeben, ist eine Möglichkeit, dem Template ein Objekt zu übergeben und die Daten
hineinzuschreiben.
Haupttemplate:
{* ein leeres Objekt $vars erzeugen *}
{var $vars = (object) null}
{include 'included.latte', vars: $vars}
{* enthält nun die Property foo *}
{$vars->foo}
Eingebundenes Template included.latte:
{* Daten in die Property foo schreiben *}
{var $vars->foo = 123}