次のようなテンプレートのセットが与えられます。
layout.tpl
<html>
<head>
<title>Some title</title>
{{template extracss}}
</head>
<body>
<h1>Page title</h1>
{{template content .}}
</body>
</html>
home.tpl
{{define "content"}}
<p>page content goes here</p>
{{end}}
edit.tpl
{{define "content"}}
<form>form content goes here</form>
{{end}}
{{define "extracss"}}<style>body{background:pink}</style>{{end}}
これを使用してテンプレートをレンダリングします。
func Render(w http.ResponseWriter, tmpname string, data interface{}) {
t, err := template.ParseFiles("views/layout.tpl", "views/"+tmpname+".tpl")
// parse error
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
if err := t.Execute(w, data); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
edit.tplは、「extracss」が定義されているため正しくレンダリングされますが、home.tplは、テンプレートパーサーが「そのようなテンプレート「extracss」はありません」と正しく言うようにはなりません。
では、「オプションの」テンプレートを使用できるようにするには、どのメカニズムを使用しますか?
何か案は?