2014-12-14 2 views
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}} 

и martinigo веб-приложение, с помощью этого шаблона 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 и определить только несколько блоков на каждой конкретной странице?

ответ

1

Вы можете пойти в другую сторону и включить нужные фрагменты на странице. Что-то вроде

{{template "header.html" .}} 

contents 

{{template "footer.html" .}}