2016-11-30 75 views
0

perl中的應用程序通過SSI調用golang中的頭來呈現橫幅。 在golang中,標題模板{gold_shop_header.shtml}包含另一個模板{reputation_level_info.html}。問題是包含模板的內容沒有被呈現。嵌套模板未呈現:Golang

代碼以供參考:

gold_shop_header.shtml 

    {{define "Gold Banner"}} 
    . 
    . 
    <div class="text-center mt-3"> 
     <span class="fs-12 font-default cursor-default"> 
       {{ Loc .Lang "Reputation" }} 
       {{ template "reputation_level" . }} 
     </span> 
    </div> 
    . 
    . 
    {{ end }} 


reputation_level_info.html 

    {{define "reputation_level"}} 
    <i class="icon-help-alt ml-5"> 
    <div class="absolute text-left" style=""> 
     <div class="relative hover-reputation-lib"> 
      <div class="relative w-100p"> 
       <div class="fs-18 mt-5">{{ Loc .Lang "Reputation Levels" }}</div> 

       <table class=" mt-10 fs-8 table-repsys" > 
        <tbody> 
         <tr class="bold"> 
          <th>{{ Loc .Lang "Badges" }}</th> 
          <th>{{ Loc .Lang "Name" }}</th> 
          <th>{{ Loc .Lang "Points" }}</th> 
         </tr> 

         {{ range .RepLevels }} 
         <tr class="{{ .Class}}"> 
          <td> 
           <span class="badges-lib {{ .ImageName}}"></span> 
          </td> 

          {{ if eq .Badges "off" }} 
          <td> 
           {{ .Badges }} 
          </td> 
          <td> 
           {{ if .UpperBound }} 
            {{ .LowerBound }} - {{ .UpperBound }} Points 
           {{ else }} 
            &gt; {{ .LowerBound }} Points 
           {{ end }} 
          </td> 
          {{ else }} 
           <td colspan="2">{{ Loc ..Lang "Reputation Off" }}</td> 
          {{ end }} 
         </tr> 
         {{ end }} 
        </tbody> 
       </table> 
      </div> 
     </div> 
    </div> 
</i> 
{{ end }} 




gen.go 

    var reputationTemplatePath = "/var/ssi/banner/gold/reputation_level_info.html" 

    _goldShopReputationTemplateBytes, err := ioutil.ReadFile(reputationTemplatePath) 
    if err != nil { 
     log.Panic("err", "error reading template", err) 
    } 

    var goldShopRepString = string(_goldShopReputationTemplateBytes) 

    var headerTemplatePath = "/var/ssi/banner/gold/gold_shop_header.shtml" 

    _goldShopHeaderTemplateBytes, err := ioutil.ReadFile(headerTemplatePath) 
    if err != nil { 
     log.Panic("err", "error reading template", err) 
    } 

    var goldShopHeaderString = string(_goldShopHeaderTemplateBytes) 

    var templatesString [] string 

    GoldShopHeaderTemplate, err = template.New("Gold Shop Header").Funcs(GetTemplateFunctionMap()). 
     Parse(goldShopHeaderString) 
    if err != nil { 
     log.Panic("err", "error parsing template", err) 
    } 
    GoldShopHeaderTemplate.Parse(goldShopRepString) 


htmlBuffer := bytes.NewBufferString("") 
template_exec_err := GoldShopHeaderTemplate.Execute(htmlBuffer, argsHeader) 

請建議什麼是錯的。我是golang的新手。包含的模板未呈現。另外,如果我刪除了{{define「Gold Banner」}}語句,那麼對於主模板,如果包含此語句,則不會呈現任何呈現。 沒有錯誤報告。

回答

1

你忘了重新分配GoldShopHeaderTemplate您解析goldShopRepString

後,該行:

GoldShopHeaderTemplate.Parse(goldShopRepString) 

應該是:

GoldShopHeaderTemplate, err := GoldShopHeaderTemplate.Parse(goldShopRepString) 
+0

謝謝。這工作。 – Ashi