英文:
panic: template: redefinition of template
问题
我得到了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"}}
左侧内容
{{end}}
{{define "right"}}
右侧内容
{{end}}
以及someOtherPage.tmpl
文件:
{{define "left"}}
左侧内容2
{{end}}
{{define "right"}}
右侧内容2
{{end}}
还有使用这些模板的martini
go
web应用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: 重新定义模板 "left"
如果我删除文件someOtherPage.tmpl
并从web应用程序中删除路由/somePage
,则错误消失。
但是如何组织布局块的构造以重用常见的布局HTML并在每个特定页面上仅定义少量块呢?
英文:
I got 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>
and mainPage.tmpl
:
{{define "left"}}
left content
{{end}}
{{define "right"}}
right content
{{end}}
and someOtherPage.tmpl
:
{{define "left"}}
left content 2
{{end}}
{{define "right"}}
right content 2
{{end}}
and martini
go
web app using that templates 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()
}
When I run my app go run martiniWebApp.go
I got error:
panic: template: redefinition of template "left"
If I remove file someOtherPage.tmpl
and route /somePage
from web app then error disappear.
But how to organise layout-block construction to resuse common layout html and define only few blocks on every specific page?
答案1
得分: 1
你可以反过来进行操作,并在页面中包含你想要的部分。类似于:
{{template "header.html" .}}
内容
{{template "footer.html" .}}
英文:
You can go the other way around and and include the pieces you want in the page. Something like
{{template "header.html" .}}
contents
{{template "footer.html" .}}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论