2017-03-05 6 views
1

golangには異なるテンプレートのフォルダがあります。メインテンプレートはmain.htmlであり、footer.htmlheader.htmlもあります。フッターとヘッダーはmain.htmlを最初に実行するテンプレートをGolangに伝える

{{template "footer.html" .}} 

がロードされています。

aswell使用異なるファイル名を持つ他のディレクトリがあるので、私は、ファイル

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

を解析するために、これを使用しています。だから私はparseFilesを使いたくない。

ただし、表示されるテンプレートは常にアルファベット順の最初のものです。 footer.htmlmain.htmla.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"テンプレートファイルを解析(またはそれ以降のテンプレートコレクションに追加)し、どのような順番に関係なくという名前のテンプレートを実行します。

関連する問題