Хочу сделать нечто такое:
{{ range .Posts.GetSublistByPagenumber .Number }}
По крайней мере по документации шаблонизатора метод должен вызываться так. Но он не вызывается. Вообще в тело метода код не заходит. При этом сервер не падает. Просто не рендерится все что после этой строки.
Метод такой:
func (posts Posts) GetSublistByPagenumber(pageNumber int) Posts {
fmt.Println("I AM IN GetSublistByPagenumber")
if pageNumber < 1 {
return posts[0:MAX_POSTS_ON_PAGE]
}
startIndex := (pageNumber - 1) * MAX_POSTS_ON_PAGE
endIndex := startIndex + MAX_POSTS_ON_PAGE
if startIndex >= len(posts) {
return []Post{}
}
if endIndex > len(posts) {
endIndex = len(posts)
}
// Возвращаем подсписок постов
return posts[startIndex:endIndex]
}
контекст страницы такой:
func GetPageContext(c *gin.Context, pageNumber int, posts Posts, data string) *Page {
accessLvl := getAccessLvl(c)
return &Page{
AccessLvl: accessLvl,
Title: "title",
Posts: posts,
Tags: t,
Number: pageNumber,
Data: data,
}
}
Тип Posts, для которого определен метод:
// Структура поста
type Post struct {
ID int
Author string
Title string
Body string
PostingTime string
UpdateTime string
Tags string
Lock int
}
type Posts []Post
В мапу как я понимаю методы не надо добавлять. Ну они и просто не добавляются.
Ну на всякий случай, роутинг такой:
func SetupRoutes(r *gin.Engine) {
funcMap := template.FuncMap{
"add": add,
"GetFirstSymbols": GetFirstSymbols,
"SplitString": SplitString,
"DaysSinceStartSite": DaysSinceStartSite,
"GetRegUsersCount": GetRegUsersCount,
"GetDbSize": GetDbSize,
"CountFilesByEXT": CountFilesByEXT,
"getCurTime": getCurTime,
}
r.SetFuncMap(funcMap)
r.LoadHTMLGlob("templates/*")
InitRoutes(r)
}