模板中的 Golang 模板全局点,该模板中的值来自范围

我的设置:


基础文件


{{define "base"}} ...basic hmtl boilerplate ...{{end}}

{{define "post"}}

    {{.ID}} {{.Username}} etc... 

    {{if $.User.Admin}}

        <...admin controls...>

    {{end}}

{{end}}

索引.tmpl


{{template "base" . }}

{{define "content"}}

    Stuff......

    {{range .Posts }}

        {{template "post" . }}

    {{end}}

{{end}}

但我得到


$.User.Admin 不是 db.Post 的字段


如何从未提供的模板中的“全局”点值中获取值?$. 显然不起作用。


我只是在范围内发布帖子,但我添加了一个新页面来查看各个帖子,并且不想更新单独显示帖子的每个区域。


更新:模板是这样执行的


func Index(rw http.ResponseWriter, req *http.Request) {

    g := GetGlobal(rw, req) // Gets logged in user info, adds branch/version info etc

    ... Get posts from the DB ...

    if err := Templates["index.tmpl"].Execute(rw, g); err != nil {

        Log.Println("Error executing template", err.Error())

    }

}

全局结构看起来像:


type Global struct {

    User     db.User

    Users    []db.User

    EditUser db.User

    Session  *sessions.Session

    Error    error

    Posts    []db.Post

    Post     db.Post


    DoRecaptcha bool

    Host        string

    Version     string

    Branch      string

}

模板加载如下:


Templates[filename] = template.Must(template.ParseFiles("templates/"+filename, "templates/base.tmpl"))


千巷猫影
浏览 162回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go