Как лучше всего создать массив и цикл в файле шаблона

Я использую 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}}
Другие вопросы по тегам