第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何為具有公共部分的多個(gè)模型渲染模板

如何為具有公共部分的多個(gè)模型渲染模板

Go
catspeake 2023-06-05 17:03:14
我的 golang 項(xiàng)目中有許多帶有 CRUD 視圖的模型,我想用通用的頁(yè)眉和頁(yè)腳呈現(xiàn)這些模型,但不知道該怎么做。我見過(guò)的例子太簡(jiǎn)單了。假設(shè)我有一個(gè)這樣的模板結(jié)構(gòu):templates  - layouts    - header.tmpl    - footer.tmpl  - users    - index.tmpl    - new.tmpl    - edit.tmpl    - show.tmpl     - venues    - index.tmpl    - new.tmpl    - edit.tmpl    - show.tmpl   如何為具有通用頁(yè)眉和頁(yè)腳的指定模型呈現(xiàn)這些模板?
查看完整描述

1 回答

?
森欄

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊

只是一個(gè)準(zhǔn)系統(tǒng)解決方案如下:


package main


import (

    "fmt"

    "os"

    "text/template"

)


func main() {

    //read in one go the header, footer and all your other tmpls.

    //append to that slice every time the relevant content that you want rendered.

    alltmpls := []string{"./layouts/header.tmpl", "./layouts/footer.tmpl", "./users/index.tmpl"}

    templates, err := template.ParseFiles(alltmpls...)

    t := templates.Lookup("header.tmpl")

    t.ExecuteTemplate(os.Stdout, "header", nil)

    t = templates.Lookup("index.tmpl")

    t.ExecuteTemplate(os.Stdout, "index", nil)

    t = templates.Lookup("footer.tmpl")

    t.ExecuteTemplate(os.Stdout, "footer", nil)

}

實(shí)際上,您可能需要一個(gè)返回適當(dāng)文件片段的函數(shù)來(lái)填充 alltmpls 變量。它應(yīng)該掃描您的目錄并從那里獲取所有文件以傳遞給 ParseFiles(),然后繼續(xù)為每個(gè)模板調(diào)用 Lookup 和 ExecuteTemplate 步驟。


進(jìn)一步考慮這個(gè)想法,我將創(chuàng)建一個(gè)新的類型,它將嵌入一個(gè)模板(或模板的一部分),由頁(yè)眉和頁(yè)腳注釋。


type hftemplate struct {

    template.Template

    header, footer *template.Template

}


func (h *hftemplate) ExecuteTemplate(wr io.Writer, name string, data interface{}) error {

    h.header.ExecuteTemplate(wr, "header", nil)

    err := h.ExecuteTemplate(wr, name, data)

    h.footer.ExecuteTemplate(wr, "footer", nil)

    return err

}

當(dāng)然,您可以將該結(jié)構(gòu)嵌入到 []Template 的完全成熟的字段中,以在頁(yè)眉和頁(yè)腳之間執(zhí)行多個(gè) ExecuteTemplates。


查看完整回答
反對(duì) 回復(fù) 2023-06-05
  • 1 回答
  • 0 關(guān)注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)