2017-03-05 118 views
1

我在golang中有一個具有不同模板的文件夾。主要模板是main.html並且還有一個footer.htmlheader.html。頁腳和頁眉在main.html中裝載告訴Golang先執行哪個模板

{{template "footer.html" .}} 

我用這來解析文件

templates, _ := template.ParseGlob("Templates/" + template_name + "/*.html") 

因爲有其他的目錄與藏漢使用不同的文件名。所以我不想用parseFiles

然而,顯示的模板總是按字母順序排列的第一個,例如, footer.html。如果我將main.html重命名爲a.html,模板將按照我希望的方式顯示(如此加載主模板並在其中執行頁腳和頁眉)。

我找不到任何文件如何告訴golang首先使用哪個模板。有沒有辦法做到這一點?

回答

0

知道template.Template可能(通常是)多個模板的集合。該模板包含關聯模板的地圖。當使用template.ParseFiles()template.ParseGlob()時,返回的template.Template將指定已解析的第一個模板(來自多個文件)。你可以閱讀更多關於此這裏:Go template name

而不是使用Template.Execute()(其上的基於上文將執行第一解析的模板)的使用方法Template.ExecuteTemplate()在那裏你可以指定要執行哪個模板,通過指定其名稱:

err := templates.ExecuteTemplate(w, "main.html", data) 

這將執行名爲"main.html"以什麼順序模板文件進行解析(或更高版本添加到模板集合)無論模板。