我想在 Go 中编写这样一个条件片段 HTML template :
{{if isUserAdmin}}
<a href"/admin/nuke">Go to the big red nuclear button</a>
{{end}}
但是,这不是直接可能的,因为模板不知道 request触发了它的执行,所以它无法确定用户是否是管理员。
是否有一些正常的方法可以实现这一点?
我提前指出:
- 我不想使用 Pipelines对于此特定数据(请参阅 other question 关于此)
- 我承认只有处理程序/ Controller 应该处理逻辑,而 View 应该只进行渲染。但是条件
{{if isUserAdmin}}
本身并不是逻辑,它是利用 Controller 已经计算出的 bool 值的必要结构。 - Funcs方法可以提供帮助,但目前还不够精简,无法轻松定义特定方法
isUserAdmin()
最佳答案
我同意 Darshan Computing 的观点,我认为从请求中传递信息的正确方法将在管道中。您可以将数据在要呈现的数据和上下文之间进行拆分,例如如果您想清楚地将两者分开,可以通过让您的模板数据结构嵌入它们:
type TemplateData struct {
*Content
*Context
}
这给出了 this例如。然后,您可以根据共享的内容和特定于查询的内容重用一些上下文/内容信息。
关于templates - 在 Go 模板中请求上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18302853/