2016-09-17 5 views
2

У меня есть проблема в одном из моих проектов, для которого я не могу найти решение. У меня есть массив продуктов, содержащий название, описание, цену и сколько штук этого тип продукта есть в моем магазине.Передача изображений в шаблон в переменной

type product struct { 
Title  string 
Description string 
Price  int 
Pieces  int 
} 

URL-адреса для изображений каждого продукта исходят от 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 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> 

Что мне нужно сделать, это передать детали продукта с соответствующими изображениями (потому что каждый продукт должен иметь по крайней мере одно изображение, но нет никакого определенного количества изображений, которые продавец может загрузить) в шаблон для карты, чтобы моя страница отображала как детали, так и изображения каждого продукта, но вместе, на одной карте. В принципе, карта должна содержать сведения о продукте и изображения для этого конкретного элемента. Это код идти, что я использую:

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") 

То, что я пытался сделать, это передать две переменные, один из продуктов и одно из изображений в одном шаблоне, один для карт, но он не работал. Кто-нибудь имеет представление о том, как я мог бы это достичь? Спасибо за ваше время!

ответ

1

Одним простым решением является изменение объявления product на URL-адрес изображений, например.

type product struct { 
    Title  string 
    Description string 
    Price  int 
    Pieces  int 
    ImagesURL []string 
} 
myproducts := []product { 
    //initialisation 
} 

или создать новый тип по STRUCT композиции

type productWithImage struct { 
    product 
    ImagesURL []string 
} 
myproducts := []productWithImage { 
    {product: product {"bracelet", "descr", 10, 7}, ImagesURL: []string{...}}, 
    //initialisation 
} 

Теперь вы можете передать одну переменную в шаблон и использовать {{range .ImagesURL}} для доступа к URL изображения в вашем product-card.html.

Смежные вопросы