Template Engine
Renderize conteudo dinamico usando o Jet template engine. Construa paginas HTML, emails e documentos com heranca de templates e includes.
Para configuração de template sets, veja Template Engine.
Carregamento
local templates = require("templates")
Obtendo Template Sets
Obter um template set pelo ID do registry para comecar a renderizar:
local set, err = templates.get("app.views:emails")
if err then
return nil, err
end
-- Usar o set...
set:release()
| Parâmetro | Tipo | Descrição |
|---|---|---|
id |
string | ID do template set no registry |
Retorna: Set, error
Renderizando Templates
Renderizar um template pelo nome com dados:
local set = templates.get("app.views:emails")
local html, err = set:render("welcome", {
user = {name = "Alice", email = "alice@example.com"},
activation_url = "https://example.com/activate?token=abc"
})
if err then
set:release()
return nil, err
end
set:release()
return html
| Parâmetro | Tipo | Descrição |
|---|---|---|
name |
string | Nome do template dentro do set |
data |
table | Variaveis para passar ao template (opcional) |
Retorna: string, error
Métodos do Set
| Método | Retorna | Descrição |
|---|---|---|
render(name, data?) |
string, error |
Renderizar template com dados |
release() |
boolean |
Liberar set de volta ao pool |
Referência da Sintaxe Jet
Jet usa {{ }} para expressoes e estruturas de controle, {* *} para comentarios.
Variaveis
{{ user.name }}
{{ user.email }}
{{ items[0].price }}
Condicionais
{{ if order.shipped }}
<p>Enviado!</p>
{{ else if order.processing }}
<p>Processando...</p>
{{ else }}
<p>Recebido.</p>
{{ end }}
Loops
{{ range items }}
<li>{{ .name }} - R${{ .price }}</li>
{{ end }}
{{ range i, item := items }}
<p>{{ i }}. {{ item.name }}</p>
{{ end }}
Heranca
{* Parent: layout.jet *}
<html>
<head><title>{{ yield title() }}</title></head>
<body>{{ yield body() }}</body>
</html>
{* Child: page.jet *}
{{ extends "layout" }}
{{ block title() }}Minha Pagina{{ end }}
{{ block body() }}<p>Conteudo</p>{{ end }}
Includes
{{ include "partials/header" }}
<main>Conteudo</main>
{{ include "partials/footer" }}
Erros
| Condição | Tipo | Retentável |
|---|---|---|
| ID vazio | errors.INVALID |
não |
| Nome de template vazio | errors.INVALID |
não |
| Permissão negada | errors.PERMISSION_DENIED |
não |
| Template não encontrado | errors.NOT_FOUND |
não |
| Erro de renderização | errors.INTERNAL |
não |
| Set ja liberado | errors.INTERNAL |
não |
Veja Error Handling para trabalhar com erros.