我的一个项目中有一个问题,我无法找到解决方案。我有一系列的产品产品,其中包含标题,说明,价格以及我的这类产品的数量。店。
type product struct {
Title string
Description string
Price int
Pieces int
}
每个产品的图像的网址来自json作为字符串,按产品分组。我有一个主页面,其中包含一些块(标题,页脚,侧边栏,我应用于所有产品的产品卡模板),我将其传递给变量产品的内容。
<div class="container col-lg-12 main">
{{render "blocks/storefront-header.html"}}
<div class="col-lg-12 padd_class" style="padding-left:10px;padding-right:10px;padding-bottom:10px">
<div class="col-lg-12" style="padding-right:70px;padding-left:70px">
<div class="row">
{{range .myproducts}}
{{template "blocks/product-card.html" .}}
{{end}}
</div>
</div>
</div>
产品卡包含标题,价格,产品描述以及应放置图像的div。
<div class="col-lg-12" style="padding-bottom:5px">
<!-- images -->
</div>
<div class="card-block" style="width:100%">
<div class="pull-right" style="margin-right:-15px">
<h3 class="pull-right price">{{.Price}}</h3>
</div>
<h4 class="card-title">{{.Title}}</h4>
<p class="card-text">{{.Description}}</p>
<button class="btn btn-primary col-lg-12 classBuy classbtn ">View product</button></a>
</div>
我需要做的是将产品详细信息与相应的图像(因为每个产品应至少有一个图像,但卖家可以上传的图像没有特定数量)传递给卡片的模板,以便我的页面将同时显示每个产品的详细信息和图像,但同时显示在同一张卡片中。基本上,卡片应包含产品详细信息和此特定项目的图像。 这是我使用的go代码:
iris.UseTemplate(html.New(html.Config{Layout: "pages/_layout.html"})).Directory("./views", ".html")
iris.Static("/img", "./img", 1)
iris.Static("/css", "./css", 1)
iris.Static("/js", "./js", 1)
type ProductList []product
var myproducts = ProductList{
{"bracelet", "descr", 10, 7},
{"hat", "descr", 3, 5},
{"scarf", "descr", 3, 0},
}
iris.Get("/dashboard", func(ctx *iris.Context) {
ctx.Render("pages/dashboard.html", iris.Map{"myproducts": myproducts}, iris.RenderOptions{"gzip": true})
})
iris.Listen(":8080")
我尝试做的是将两个变量,一个产品和一个图像传递给同一个模板,一个用于卡片,但它没有用。 有没有人知道我能做到这一点的方式? 谢谢你的时间!
答案 0 :(得分:1)
一个简单的解决方案是将product
的声明更改为包含图片网址,例如
type product struct {
Title string
Description string
Price int
Pieces int
ImagesURL []string
}
myproducts := []product {
//initialisation
}
或按结构组合创建新类型
type productWithImage struct {
product
ImagesURL []string
}
myproducts := []productWithImage {
{product: product {"bracelet", "descr", 10, 7}, ImagesURL: []string{...}},
//initialisation
}
现在,您可以将单个变量传递到模板,然后使用{{range .ImagesURL}}
访问product-card.html
中的图片网址。