如何在模板范围内访问会话变量?

huangapple go评论91阅读模式
英文:

How to access session variable inside a template range?

问题

我想添加一个“编辑”按钮,只有管理员才能看到:

{{range $n := .articles}}
   <p>{{$n.Content}} </p>
   {{ if .is_mod}}
      <button> 编辑 </button>
   {{end}}
{{end }}

我已经在会话中将is_mod设置为布尔变量,并将其传递给模板。然而,它不是Article结构体的字段,所以我得到了这个错误:

> 在<.is_mod>处执行“content”:is_mod不是结构类型model.Article的字段。

一个明显的解决方案是在控制器中创建一个新的结构体,其中包含一个IsMod字段,并将其传递给模板,但这样做会很混乱和低效,所以如果可能的话,我宁愿避免这样做,寻找一个更优雅的解决方案。

英文:

I want to add an Edit button which appear only for moderators:

{{range $n := .articles}}
   &lt;p&gt;{{$n.Content}} &lt;/p&gt;
   {{ if .is_mod}}
      &lt;button&gt; Edit &lt;/button&gt;
   {{end}}
{{end }}

I have already set is_mod as a boolean variable in session and passed it to template. However, it is not a field in the Article struct, so, I get this error:

> executing "content" at <.is_mod>: is_mod is not a field of struct type
> model.Article.

One obvious solution is to make a new struct in the controller which includes a IsMod field and pass that to template, but that is messy and inefficient so I'd rather avoid it if possible and looking for a more elegant solution.

答案1

得分: 1

你需要将会话变量传递给模板。我没有尝试过,但你可以尝试像这样的写法:

c.HTML(http.StatusOK, "template_name", gin.H {
  "articles": articles,
  "is_mod": is_mod,
})

上述语法适用于 gin-gonic/gin 框架。

英文:

You need to pass session variable to the template. I didn't tried it, but you can try something like this:

c.HMTL(http.StatusOK, &quot;template_name&quot;, gin.H {
  &quot;articles&quot;: articles,
  &quot;is_mod&quot;: is_mod,
})

The above syntax is for gin-gonic/gin framework. .

答案2

得分: 0

这对我来说是有效的。

c.HTML(http.StatusOK, "index.html", gin.H {
"posts": posts,
"some_data": "主页帖子",
})

英文:

This works for me.

c.HTML(http.StatusOK, &quot;index.html&quot;, gin.H {
  &quot;posts&quot;: posts,
  &quot;some_data&quot;: &quot;Home page posts&quot;,
})

huangapple
  • 本文由 发表于 2016年12月1日 12:01:02
  • 转载请务必保留本文链接:https://go.coder-hub.com/40902421.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定