Как установить переменную для внешнего HTML шаблона в Go? - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть два Go шаблона.

top.html:

<html>
<head>
    <title>{{ .title }}</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta charset="UTF-8">
</head>
<body>

и register.html:

{{ template "top.html" . }}
    <h1>Register account</h1>
...

В настоящее время устанавливается заголовок Я использую функцию:

r.GET("/register", func(c *gin.Context) {
    c.HTML(http.StatusOK, "register.html", gin.H{
        "title" : "Register Account"
    })
})

Это не идеально, так как я должен установить параметр для каждой веб-страницы. Как я могу установить title в top.html из register.html? Я бы предпочел иметь что-то похожее на:

{{ set .title = "Register Account" }}
{{ template "top.html" . }}
    <h1>Register account</h1>
...

Конечно, приведенный выше код не работает. Есть ли что-нибудь для достижения того, чего я хочу?

1 Ответ

0 голосов
/ 09 апреля 2020

Вы можете сделать это, внедрив функцию шаблона. Например:

func mapset(m map[string]string, key, val string) error {
    m[key] = val
    return nil
}

Затем, после регистрации его методом Funcs, вместо {{ set .title = "Register Account" }} вы будете использовать его как:

{{ (mapset . "title" "Register Account") }}

https://play.golang.com/p/a08OVDpLLH4

...