2016-07-31 96 views
2

這是我的目錄結構:Golang:解析目錄和子目錄中的所有模板?

app/ 
    template/ 
    layout/ 
     base.tmpl 
    index.tmpl 

template.ParseGlob("*/*.tmpl")解析index.tmpl但不base.tmpllayout子目錄。有沒有辦法解析所有模板遞歸?

+3

的可能的複製[子目錄中可以template.ParseGlob()解析模板?](http://stackoverflow.com/questions/32309830/can-template-parseglob-parse-templates-in-subdirectories ) – icza

+0

@icza我同意可能的重複,但它不完全提供瞭如何解決這個問題的答案,這可能是這些重複問題出現的原因。 – Datsik

回答

10

不是沒有實現自己的函數來做到這一點,我一直在使用這樣的

func ParseTemplates() *template.Template { 
    templ := template.New("") 
    err := filepath.Walk("./views", func(path string, info os.FileInfo, err error) error { 
     if strings.Contains(path, ".html") { 
      _, err = templ.ParseFiles(path) 
      if err != nil { 
       log.Println(err) 
      } 
     } 

     return err 
    }) 

    if err != nil { 
     panic(err) 
    } 

    return templ 
} 

某事,這將解析所有的模板,那麼你可以通過調用例如他們的名字使它們

template.ExecuteTemplate(w, "home", nil)

+3

這樣的恥辱不在標準庫中。不過,這並不難實現。 – sargas

相關問題