Template-Engine
Das Modul templates rendert Jet-Templates aus konfigurierten Sets. Templates können Vererbung und Includes verwenden. Diese Seite ist eine API-Referenz mit einzelnen Rendering-Beispielen und keine eigenständige Template-Bereitstellung. Die Registry-IDs und Template-Quellen müssen bereits konfiguriert sein; der ausführbare Eintrag muss templates aktivieren und für das angeforderte Set die Berechtigung template.get besitzen.
Informationen zur Konfiguration von Template-Sets finden Sie unter Template-Engine.
Laden
local templates = require("templates")
templates.get
Rufen Sie ein Template-Set anhand seiner Registry-ID ab:
local set, err = templates.get("app.views:emails")
if err then
return nil, err
end
-- Use the set...
return set:release()
| Parameter | Typ | Beschreibung |
|---|---|---|
id |
string | Template-Set-Registry-ID |
Gibt zurück: Set, error
set:render
Rendern Sie ein Template anhand seines Namens mit Daten:
local set, get_err = templates.get("app.views:emails")
if get_err then
return nil, get_err
end
local html, err = set:render("welcome", {
user = {name = "Alice", email = "alice@example.com"},
activation_url = "https://example.invalid/activate"
})
set:release()
if err then
return nil, err
end
return html
Der Aufrufer ist für jedes abgerufene Set verantwortlich, bis release() aufgerufen wurde. Geben Sie es nach dem letzten Rendern auch auf geprüften Fehlerpfaden frei; wiederholte Freigaben sind sicher. Das Rendering macht von der Anwendung bereitgestellte Werte nicht für jeden Ausgabekontext sicher. Halten Sie Geheimnisse und einmalig verwendbare URLs aus Logs heraus und wenden Sie die Escaping- oder Bereinigungsregeln des Kontexts an, in dem die gerenderte Zeichenkette verwendet wird.
| Parameter | Typ | Beschreibung |
|---|---|---|
name |
string | Template-Name innerhalb des Sets |
data |
table | An Template zu übergebende Variablen (optional) |
Gibt zurück: string, error
Übersicht der Set-Methoden
| Methode | Gibt zurück | Beschreibung |
|---|---|---|
render(name, data?) |
string, error |
Template mit Daten rendern |
release() |
boolean |
Set an Pool zurückgeben |
Jet-Syntax-Referenz
Jet verwendet {{ }} für Ausdrücke und Kontrollstrukturen, {* *} für Kommentare.
Variablen
{{ user.name }}
{{ user.email }}
{{ items[0].price }}
Bedingungen
{{ if order.shipped }}
<p>Shipped!</p>
{{ else if order.processing }}
<p>Processing...</p>
{{ else }}
<p>Received.</p>
{{ end }}
Schleifen
{{ range items }}
<li>{{ .name }} - ${{ .price }}</li>
{{ end }}
{{ range i, item := items }}
<p>{{ i }}. {{ item.name }}</p>
{{ end }}
Vererbung
{* Parent: layout.jet *}
<html>
<head><title>{{ yield title() }}</title></head>
<body>{{ yield body() }}</body>
</html>
{* Child: page.jet *}
{{ extends "layout" }}
{{ block title() }}My Page{{ end }}
{{ block body() }}<p>Content</p>{{ end }}
Includes
{{ include "partials/header" }}
<main>Content</main>
{{ include "partials/footer" }}
Fehler
| Bedingung | Art | Wiederholbar |
|---|---|---|
| Leere ID | errors.INVALID |
nein |
| Leerer Template-Name | errors.INVALID |
nein |
| Berechtigung verweigert | errors.PERMISSION_DENIED |
nein |
| Template-Set fehlt, ist nicht verfügbar oder hat den falschen Ressourcentyp | errors.INTERNAL |
nein |
| Template nicht gefunden | errors.NOT_FOUND |
nein |
| Render-Fehler | errors.INTERNAL |
nein |
| Rendering nach der Freigabe des Sets versucht | errors.INTERNAL |
nein |
Informationen zum Umgang mit Fehlern finden Sie unter Fehlerbehandlung.