1

我得到了layout.tmpl

<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>  
    <div id='left'>
        {{template "left" .}}
    </div>
    <div id='right'>
        {{template "right" .}}
    </div>
</body>
</html>

mainPage.tmpl

{{define "left"}}
  left content
{{end}}

{{define "right"}}
    right content
{{end}}

someOtherPage.tmpl

{{define "left"}}
  left content 2
{{end}}

{{define "right"}}
    right content 2
{{end}}

martini go使用该模板的网络应用程序martiniWebApp.go

package main
import (
    "github.com/go-martini/martini"
    "github.com/martini-contrib/render"
)

func main() {
    m := martini.Classic()
    m.Use(render.Renderer(render.Options{
        Layout: "layout",
    }))

    m.Get("/", func(r render.Render) {
        r.HTML(200, "mainPage", nil)
    })

    m.Get("/somePage", func(r render.Render) {
        r.HTML(200, "someOtherPage", nil)
    })
    m.Run()
}

当我运行我的应用程序时go run martiniWebApp.go出现错误:

panic: template: redefinition of template "left"

如果我从网络应用程序中删除文件someOtherPage.tmpl和路由/somePage,那么错误就会消失。但是如何组织布局块构造以重用通用布局 html 并在每个特定页面上只定义几个块?

4

1 回答 1

1

您可以反过来,在页面中包含您想要的部分。就像是

{{template "header.html" .}}

 contents 

{{template "footer.html" .}}
于 2015-06-22T16:49:28.610 回答