2016-09-17 7 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가 포함되어 있습니다. 내가해야 할 일은

<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 
} 

또는 구조체의 구성

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

하여 새로운 유형을 만들 이제 템플릿에 하나의 변수를 전달할 수 있으며, {{range .ImagesURL}}을 사용하면 product-card.html에 이미지 URL에 액세스 할 수 있습니다.