我已经和golang玩了几个星期了,最近开始调查狂欢框架。
在我使用的其他语言/框架中,始终可以检查模板中当前路由的来源。有些东西让我更容易将导航等内容保存在单独的模板文件中,只需执行此操作:
<!-- in header template -->
<ul class="nav">
{{ if eq .req.action "App.Index" }}
<li class="active"><a href="#">
{{ else }}
<li><a href="{{url "App.Index" }}">
{{end}}
Home</a></li>
<!-- other links here -->
</ul>
这不是我正在编写的实际代码,但我希望这清楚地说明了这个想法是什么:为导航提供方便的模板,并根据当前操作设置类/链接。<登记/> 经过一段时间浏览源代码和一些golang模板示例后,我无法完全看到当前操作或其他任何内容暴露给模板的方式。
为了解决这个问题,我目前正在使用func拦截器为我自动设置渲染参数:
func prependRoute(c *revel.Controller) revel.Result {
c.RenderArgs["_current_route"] = c.Action
return nil
}
这个工作正常,但感觉有点hacky。我想我可能遗漏了一些非常明显的东西,这些东西可以让我在真正需要它时保留func拦截器。
问题 很简单:找出revel模板中当前操作的正确,最可靠的方法是什么?