Как лучше всего создать массив и цикл в файле шаблона
Я использую Gingonic для своего проекта Go, и в моем footer.tmpl у меня будет более 10++ навигационных ссылок, вместо того, чтобы писать ссылку несколько раз, было бы намного проще, если бы я создал массив, содержащий ссылки, и название и цикл, верно?
Проблема в том, что, как я исследовал, у Golang нет встроенной функции для объявления переменных массива / карты внутри файлов представления (.tmpl/.html).
Почему мне нужно, чтобы массив находился внутри файла представления, потому что этот footer.tmpl будет включен почти во все другие страницы, если мне придется записать массив внутри контроллера и передать переменную, будет слишком сложно передать параметры массива для всех страниц.
Это мой код Голанга:
r.GET("/", func(c *gin.Context) {
tmpl := template.Must(template.ParseFiles("templates/layout.tmpl", "templates/index.tmpl", "templates/common/header_a.tmpl", "templates/common/footer_a.tmpl"))
r.SetHTMLTemplate(tmpl)
var hometabList = []HomeTab{
HomeTab{Title: "Tab1", Value: 1},
HomeTab{Title: "Tab2", Value: 2},
HomeTab{Title: "Tab3", Value: 3},
}
c.HTML(200, "layout", gin.H {
"tab": hometabList,
"product": "123",
})
})
Я разработчик PHP, перехожу на Go, в PHP вы можете сделать это внутри представления:
view.php
<body>
<?php
$arr_link = ['link1', 'link2', 'link3'];
for($i = 0; $i < count($arr_link); $i++): ?>
<div><a><?= $arr_link[$i]; ?></a></div>
<?php endfor; ?>
</body>
Таким образом, когда я включу этот нижний колонтитул на другую страницу, будет легче поддерживать коды.
1 ответ
Вы можете использовать диапазон в своем шаблоне:
{{range .YourListItems}}
<div><a href="{{.Url}">{{.Name}}</a></div>
{{end}}