php-Editor Zimo In Go-Vorlagen müssen wir häufig Fotos verarbeiten, und die Verwendung von Random Int kann uns dabei helfen, einige interessante Effekte zu erzielen. Random Int ist eine Funktion, die zufällige Ganzzahlen generiert. Wir können sie verwenden, um zufällige Operationen an Fotos in Vorlagen durchzuführen, z. B. das zufällige Anzeigen verschiedener Fotos, das zufällige Hinzufügen von Filtereffekten zu Fotos usw. In diesem Artikel erfahren Sie, wie Sie zufällige Ints in Go-Vorlagen zum Verarbeiten von Fotos verwenden, und geben einige Beispiele für praktische Anwendungen. Unabhängig davon, ob Sie Anfänger oder erfahrener Entwickler sind, können Sie in diesem Artikel einige praktische Tipps zu Go-Vorlagen und zufälligen Ints erfahren.
Ich habe eine einfache zufällige Ganzzahl in meinem Code, die ich an eine Vorlage übergebe
min := 1 max := 1563 photo := rand.intn(max - min + 1) fmt.println(photo) tmpl.executetemplate(w, "index.html", struct { pages []page currentpage int totalpage int nextpage int previouspage int lastpage int shownext bool showprevious bool photo int }{ pages: pages, currentpage: pageindex + 1, totalpage: totalpaginationpage, nextpage: pageindex + 1, previouspage: pageindex - 1, lastpage: totalpaginationpage - 1, shownext: pageindex+1 < totalpaginationpage, showprevious: pageindex-1 >= 0, photo: photo, })
Die Idee ist, ein Foto in meiner Vorlage zufällig anzuordnen (ich habe 1563 in meinem Ordner)
{{range.page}}
<div id="content"> <div class="card"> <p> <div class="card-img"> <a href="{{.slug}} "> <img src="{{.photo}}" alt="" /></a> </div> <div class="card-info"> <div class="card-info-title"> <a href="{{.slug}} " >{{.title}} </a> </div>
src="{{.photo}}" führt zum Absturz der Vorlage, als ob die Variable nicht korrekt übergeben worden wäre. Vielleicht liegt das Problem darin, dass dies innerhalb einer Schleife geschieht und ich daher eine Zufallszahl pro Beitrag benötige, um die Fotos anzuzeigen?
Gibt es eine andere Möglichkeit, dies direkt in der Vorlage zu tun?
Aktualisiert
Danke für die Anleitung, die ich jetzt bekomme
min := 1 max := 1563 photos := make([]int, len(pages)) for i := range photos { photos[i] = rand.intn(max - min + 1) } tmpl.executetemplate(w, "index.html", struct { pages []page currentpage int totalpage int nextpage int previouspage int lastpage int shownext bool showprevious bool photo []int }{ pages: pages, currentpage: pageindex + 1, totalpage: totalpaginationpage, nextpage: pageindex + 1, previouspage: pageindex - 1, lastpage: totalpaginationpage - 1, shownext: pageindex+1 < totalpaginationpage, showprevious: pageindex-1 >= 0, photo: photos, })
In der Vorlage
{{range $idx, $page := .pages}} <div id="content"> <div class="card"> <p> <div class="card-img"> <a href="{{.slug}} "> <img src="{{index $.photos $idx}}" alt="" /></a> </div> <div class="card-info"> <div class="card-info-title"> <a href="{{.slug}} " >{{.title}} </a> </div> <div class="card-info-category"> <p> tags: </p> <ul> <li> {{.tags}} </li> </ul> </div> <div class="card-info-date"> {{.date}} </div> </div> </p> </div> </div> {{end}}
Auch ausprobiert
<a href="{{.slug}} "> <img src="/public/suisse/suisse{{index $.photos $idx}}.jpg" alt="" /></a>
Aber leider wird die Vorlage nicht mehr ausgeführt, sobald ich anrufe
{{index $.Photos $idx}}
Ich glaube, das ist eine Art Tippfehler von meiner Seite?
{{range}}
操作会更改点,因此 {{range .pages}}
内的 {{.photo}}
将解析为 .pages
Elemente.
Verwenden Sie $
, um auf den „äußeren“ Rohwert zu verweisen, der an die Vorlagenausführung übergeben wird:
src="{{$.photo}}"
Obwohl dies nur eine Ganzzahl ist, möchten Sie sie möglicherweise in einem Pfad oder einer URL wie dieser verwenden:
src="/path/to/images?id={{$.photo}}"
Hinweis: Wenn Sie für alle Seiten unterschiedliche Bilder verwenden möchten, müssen Sie für jede Seite eine andere Nummer übergeben, nicht nur eine einzelne Nummer. Fügen Sie dann ein photo
字段,然后您可以在 {{range}}
中引用它,如原始代码中的 {{.photo}}
zur Seite hinzu.
Sie haben geschrieben, dass Sie sie nicht ändern page
,因为它来自您的数据库。如果是这样,则传递一段随机数并使用 index
wie folgt aufrufen können:
min := 1 max := 1563 photos := make([]int, len(pages)) for i := range photos { photos[i] = rand.intn(max - min + 1) } tmpl.executetemplate(w, "index.html", struct { pages []page currentpage int totalpage int nextpage int previouspage int lastpage int shownext bool showprevious bool photo []int }{ pages: pages, currentpage: pageindex + 1, totalpage: totalpaginationpage, nextpage: pageindex + 1, previouspage: pageindex - 1, lastpage: totalpaginationpage - 1, shownext: pageindex+1 < totalpaginationpage, showprevious: pageindex-1 >= 0, photo: photos, })
In der Vorlage:
{{range $idx, $page := .pages}} <a href="{{.slug}} "><img src="{{index $.photos $idx}}" alt=""/> </a> {{end}}
Oder registrieren Sie eine random
Funktion, die Sie über die Vorlage aufrufen können:
// parse the template as you did, but first register a random function: min, max := 1, 1563 tmpl, err := template.new("").funcs(template.funcmap{ "random": func() int { return rand.intn(max - min + 1) }, }).parsefiles("template-name.html")
Sie können es über eine Vorlage wie diese aufrufen:
{{range .Pages}} <a href="{{.Slug}} "><img src="{{random}}" alt=""/> </a> {{end}}
Das obige ist der detaillierte Inhalt vonVerwenden von zufälligem Int für Fotos in der Go-Vorlage. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!