英文:
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}}
<p>{{$n.Content}} </p>
{{ if .is_mod}}
<button> Edit </button>
{{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, "template_name", gin.H {
"articles": articles,
"is_mod": 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, "index.html", gin.H {
"posts": posts,
"some_data": "Home page posts",
})
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论