Template Engine
Template Engine
Seção intitulada “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
Seção intitulada “Carregamento”local templates = require("templates")Obtendo Template Sets
Seção intitulada “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, errend
-- Usar o set...
set:release()| Parâmetro | Tipo | Descrição |
|---|---|---|
id | string | ID do template set no registry |
Retorna: Set, error
Renderizando Templates
Seção intitulada “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, errend
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
Seção intitulada “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
Seção intitulada “Referência da Sintaxe Jet”Jet usa {{ }} para expressoes e estruturas de controle, {* *} para comentarios.
Variaveis
Seção intitulada “Variaveis”{{ user.name }}{{ user.email }}{{ items[0].price }}Condicionais
Seção intitulada “Condicionais”{{ if order.shipped }} <p>Enviado!</p>{{ else if order.processing }} <p>Processando...</p>{{ else }} <p>Recebido.</p>{{ end }}{{ range items }} <li>{{ .name }} - R${{ .price }}</li>{{ end }}
{{ range i, item := items }} <p>{{ i }}. {{ item.name }}</p>{{ end }}Heranca
Seção intitulada “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
Seção intitulada “Includes”{{ include "partials/header" }}<main>Conteudo</main>{{ include "partials/footer" }}| 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.