私はここ数週間 golang をいじっていて、最近 revel フレームワークを調べ始めました。
私が使用した他の言語/フレームワークでは、テンプレート内から現在のルートが何であるかを常に確認できました。ナビゲーションなどを別のテンプレート ファイルに保持しやすくし、これを実行するだけで簡単になりました。
<!-- 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
}
これは正常に機能していますが、少しハッキーな感じがします。本当に必要なときに func インターセプターを予約できるようにする、本当に明白な何かがおそらく欠けていると思います。
質問は簡単です: Revel テンプレートで現在のアクションが何であるかを知るための、正しくて最も信頼できる方法は何ですか?