2016-04-19 11 views
-1

ウェブアプリケーションを作成するには、移動でエコーフレームワークを使用しています。私はtemplatesと呼ばれるディレクトリを持っており、その中には2つのディレクトリlayoutsusersがあります。次のようにディレクトリツリーは、次のとおりゴランのレンダリングテンプレート

layouts 
|--------default.tmpl 
|--------footer.tmpl 
|--------header.tmpl 
|--------sidebar.tmpl 

users 
|--------index.tmpl 

ヘッダ、フッタ、およびサイドバーのコードと似ています。次のように

{{define "header"}} 
<!-- some html here --> 
{{ end }} 
.... 

default.tmplである:

{{ define "default" }} 
{{ template "header" }} 

{{ template "sidebar" }} 

<div class="content-wrapper"> 
    <div class="container-fluid"> 

     <div class="row"> 
      <div class="col-md-12"> 
       <h2 class="page-title">Dashboard</h2> 
       {{ template "content" .}} 
      </div> 
     </div> 
    </div> 
</div> 

{{ template "footer" }} 
{{ end }} 

そしてusers\index.tmpl

{{define "index"}} 
    {{template "default"}} 
{{end}} 

{{define "content"}} 
<p>Hello world</p> 
{{end}} 

は今、私は

t := &Template{} 
t.templates = template.Must(template.ParseGlob("views/layouts/*")) 
t.templates = template.Must(template.ParseGlob("views/user/*")) 

を使用してファイルを解析し、

func User(c echo.Context) error { 
    return c.Render(http.StatusOK, "index", nil) 
} 

それをレンダリングしてみてくださいしかし、私は唯一の内部サーバーエラーが発生します。テンプレートをデバッグする方法もわかりません。 users\index.tmplに他のテンプレートタグが含まれていない場合は、コードが機能します。しかし、私はそれにメインテンプレートを含めると、エラーが返されます。私はここで間違って何をしていますか?

答えて

1

これを解決するために管理されました。このページhttps://elithrar.github.io/article/approximating-html-template-inheritance/が助けました。 基本的に、テンプレートを解析したコードを変更する必要がありました。

tpls, err := filepath.Glob("views/user/*") 
if err != nil { 
    log.Fatal(err) 
} 

layouts, err := filepath.Glob("views/layouts/*") 
if err != nil { 
    log.Fatal(err) 
} 

for _, layout := range layouts { 
    files := append(layouts, tpls) 
    t.templates = template.Must(template.ParseFiles(files...)) 
} 
関連する問題