Ce face text/template.ParseFiles
template.ParseFiles("email.tmpl", "subsol.tmpl") citește fișierele și le parsează. Fiecare fișier devine un șablon cu numele fișierului (fără director), iar șablonul returnat este primul fișier. Șabloanele din același set se pot include unul pe altul cu {{template "subsol.tmpl" .}}.
template.ParseGlob("sabloane/*.tmpl") încarcă toate fișierele care se potrivesc cu modelul. Pentru a executa un anumit șablon din set, folosește ExecuteTemplate cu numele lui. Pentru fișiere incluse în program la compilare (//go:embed) există template.ParseFS.
Parametri
| Parametru | Descriere |
|---|---|
filenames |
Căile fișierelor (cel puțin unul). |
Ce returnează
Setul de șabloane (*template.Template) și o eroare (fișier lipsă sau sintaxă greșită).
Exemple
Exemplul 1: Șablon de e-mail cu subsol separat
package main
import (
"fmt"
"os"
"text/template"
)
func main() {
os.WriteFile("bun-venit.tmpl", []byte("Bună, {{.Nume}}!\nContul tău a fost creat.\n{{template \"subsol.tmpl\" .}}"), 0o644)
os.WriteFile("subsol.tmpl", []byte("--\nEchipa Dexblog | {{.Email}}\n"), 0o644)
t, err := template.ParseFiles("bun-venit.tmpl", "subsol.tmpl")
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Șablon principal:", t.Name())
t.Execute(os.Stdout, map[string]string{"Nume": "Ana", "Email": "ana@example.ro"})
}
Rezultat
Șablon principal: bun-venit.tmpl
Bună, Ana!
Contul tău a fost creat.
--
Echipa Dexblog | ana@example.ro
Exemplul 2: Fișier lipsă
package main
import (
"fmt"
"text/template"
)
func main() {
_, err := template.ParseFiles("sabloane/lipsa.tmpl")
fmt.Println(err)
}
Rezultat
open sabloane/lipsa.tmpl: no such file or directory
Greșeli frecvente
- Creezi șablonul cu
template.New("pagina")și apoi.ParseFiles("sabloane/pagina.html"): numele trebuie să fie"pagina.html", altfelExecutedă eroarea... is an incomplete or empty template. - Două fișiere cu același nume în directoare diferite: ultimul îl înlocuiește pe primul, pentru că numele șablonului este doar numele fișierului.
Comenzi înrudite
text/template.Template.ExecuteTemplate: Execută din set șablonul cu numele dat (definit cu {{define}} sau încărcat dintr-un fișier).text/template.Must: Primește rezultatul lui Parse (șablon, eroare) și oprește programul cu panică dacă există eroare; pentru șabloane fixe.text/template.New: Creează un șablon text cu un nume; Parse îi încarcă textul cu acțiuni {{…}} care vor fi completate din date.