Tipps und Tricks
Editoren und IDE
Schreiben Sie Vorlagen in einem Editor oder einer IDE, die Latte unterstützt. Es wird viel angenehmer sein.
- NetBeans IDE hat integrierte Unterstützung
- PhpStorm: Installieren Sie das Latte-Plugin
in
Settings > Plugins > Marketplace
- VS Code: suche markerplace für Nette Latte + Neon oder Nette Latte templates plugin
- Sublime Text 3: in der Paketverwaltung das Paket
Nette
suchen und installieren und Latte in auswählenView > Syntax
- in alten Editoren Smarty-Hervorhebung für .latte-Dateien verwenden
Das Plugin für PhpStorm ist sehr fortschrittlich und kann perfekt PHP-Code vorschlagen. Um optimal zu arbeiten, verwenden Sie getippte Vorlagen.
Unterstützung für Latte kann auch in der Web-Code-Highlighter Prism.js und Editor Ace gefunden werden.
Latte innerhalb von JavaScript oder CSS
Latte kann sehr bequem innerhalb von JavaScript oder CSS verwendet werden. Aber wie lässt sich vermeiden, dass Latte JavaScript-Code oder CSS-Stil fälschlicherweise für ein Latte-Tag hält?
<style>
/* ERROR: interprets as tag {color} */
body {color: blue}
</style>
<script>
// ERROR: interprets as tag {id}
var obj = {id: 123};
</script>
Option 1
Vermeiden Sie Situationen, in denen ein Buchstabe unmittelbar auf ein “{” folgt, indem Sie entweder ein Leerzeichen, einen Zeilenumbruch oder ein Anführungszeichen dazwischen setzen:
<style>
body {
color: blue
}
</style>
<script>
var obj = {'id': 123};
</script>
Option 2
Die Verarbeitung von Latte-Tags innerhalb eines Elements mit n:syntax vollständig abschalten:
<script n:syntax="off">
var obj = {id: 123};
</script>
Option 3
Die Syntax des Latte-Tags auf doppelte geschweifte Klammern innerhalb des Elements umstellen:
<script n:syntax="double">
var obj = {id: 123}; // this is JavaScript
{{if $cond}} alert(); {{/if}} // this is Latte tag
</script>
In JavaScript sollten Sie Variablen nicht in Anführungszeichen setzen.
Ersatz für use
Klausel
Wie kann man die in PHP verwendeten use
Klauseln ersetzen, so dass man beim Zugriff auf eine Klasse keinen
Namespace angeben muss? PHP-Beispiel:
use Pets\Model\Dog;
if ($dog->status === Dog::StatusHungry) {
// ...
}
Option 1
Anstelle der Klausel use
den Klassennamen in einer Variablen speichern und dann anstelle von Dog
$Dog
verwenden:
{var $Dog = Pets\Model\Dog::class}
<div>
{if $dog->status === $Dog::StatusHungry}
...
{/if}
</div>
Option 2
Wenn das Objekt $dog
eine Instanz von Pets\Model\Dog
ist, dann kann
{if $dog->status === $dog::StatusHungry}
verwendet werden.
XML-Erzeugung in Latte
Latte kann jedes beliebige Textformat (HTML, XML, CSV, iCal usw.) generieren. Um die angezeigten Daten jedoch richtig zu
entschlüsseln, müssen wir ihm mitteilen, welches Format wir generieren wollen. Der {contentType}
Tag wird hierfür verwendet.
{contentType application/xml}
<?xml version="1.0" encoding="UTF-8"?>
...
Dann können wir zum Beispiel eine Sitemap auf ähnliche Weise erstellen:
{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>
Übergabe von Daten aus einer eingebundenen Vorlage
Die Variablen, die wir mit {var}
oder {default}
in der eingebundenen Vorlage erstellen, existieren
nur in dieser und sind in der einbindenden Vorlage nicht verfügbar. Wenn wir einige Daten von der eingeschlossenen Vorlage an die
einschließende Vorlage zurückgeben wollen, besteht eine der Möglichkeiten darin, ein Objekt an die Vorlage zu übergeben und
die Daten darin zu speichern.
Hauptvorlage:
{* erzeugt ein leeres Objekt $vars *}
{var $vars = (object) null}
{include 'included.latte', vars: $vars}
{* enthält jetzt die Eigenschaft foo *}
{$vars->foo}
Enthaltene Vorlage included.latte
:
{* Daten in die Eigenschaft foo schreiben *}
{var $vars->foo = 123}