I have problem with printing nested menu to template. This is what I get how look right now
{{range $cat := .}}
{{if eq $cat.Parent 0}}
<p>{{$cat.Name}}</p>
{{end}}
{{ $a := ima $cat.ID}}
{{template "childs" $a}}
{{end}}
{{define "childs"}}
{{if .}}
<ul>
{{range . }}
<li class="post">
<div class="postHead">
<div class="postTitle">
<b>{{.Name}}</b>
</div>
</div>
{{ $a := ima .ID}}
{{template "childs" $a}}
{{end}}
</li>
{{end}}
</ul>
{{end}}
I just don't know how to skip duplicate, I try with every if condition what come to my mind but no success, function ima just return categories with parent id I pass
this is function ima
func ima(id uint) []*Category {
categories := []Category{}
db.Where("parent = ?", id).Find(&categories)
return categories
}
and this is function who render my template
func omg(w http.ResponseWriter, r *http.Request) {
categories := []Category{}
db.Find(&categories)
t, err := template.New("omg.html").Funcs(template.FuncMap{
"ima": ima,
}).ParseFiles("templates/omg.html")
if err != nil {
fmt.Printf("%v", err)
}
if err := t.Execute(w ,categories); err != nil {
fmt.Println(err)
}
}