Разбор пользовательских переменных через шаблоны в Golang

Могу ли я установить переменную в файле шаблона? {{$title := "Login"}} затем проанализируйте его в другом файле, используя {{template "header" .}}?

Пример того, что я пытаюсь:

header.tmpl

{{define "header"}}
<title>{{.title}}</title>
{{end}}

login.tmpl

{{define "login"}}
<html>
    <head>
        {{$title := "Login"}}
        {{template "header" .}}
    </head>
    <body>
        Login Body!
    </body>
</html>
{{end}}

Как я могу разобрать эту пользовательскую переменную $ title, которую я сделал, к моему шаблону заголовка?

2 ответа

Решение

Как сказал @zzn, невозможно ссылаться на переменную в одном шаблоне из другого.

Один из способов добиться того, чего вы хотите - это определить шаблон, который будет передаваться из одного шаблона в другой.

header.html {{define "header"}} <title>{{template "title"}}</title> {{end}}

login.html {{define "title"}}Login{{end}} {{define "login"}} <html> <head> {{template "header" .}} </head> <body> Login Body! </body> </html> {{end}}

Вы также можете пройти через заголовок в качестве конвейера, когда вы вызываете шаблон заголовка ({{template header $title}} или даже {{template header "index"}}), но это не позволит вам передать что-либо еще в этот шаблон.

Нет, невозможно проанализировать переменную до другого файла.

в соответствии с этим:

Область действия переменной распространяется на действие "end" структуры управления ("if", "with" или "range"), в которой она объявлена, или до конца шаблона, если такой структуры управления нет. Вызов шаблона не наследует переменные с момента его вызова.

Другие вопросы по тегам