共通の状態をテンプレートに渡すことに関して、Play フレームワークを理解するという多かれ少なかれ一般的な質問があります。http://jazzy.id.au/default/2012/10/26/passing_common_state_to_templates_in_play_framework.htmlのように、広く議論されているトピック ですが、ベストプラクティスが何であるかはまだわかりません。私は CakePHP や Django などのスクリプト言語ベースの MVC フレームワークに精通しているので、この問題は私には関係ありませんでした。したがって、基本的に 2 つの可能性があります。
- テンプレートで暗黙の変数を使用すると、Scala だけで動作しますが、すべてのテンプレートでその変数を宣言する必要があります!?
- Http.Context クラスを使用してデータを保存します。これは、多くのデータを渡すのに適していないハックのように思えます。(間違っていたら訂正してください)
その問題には 2 つの重要な使用例があります。1 つ目は、ログイン ユーザー オブジェクトをどこでも使用できるようにすることです。これは、Http.Context で簡単に解決できます。2つ目は私にとってより難しいです。ログインフォームまたはユーザー固有のオプションを表示するヘッダーがあります。したがって、テンプレートにif条件があり、ユーザーがログインしているかどうかを確認します。しかし、ログインフォームを表示するときは、コントローラーでフォームオブジェクトを生成する必要があります。そのため、すべてのコントローラーでそのオブジェクトを生成し、すべてのテンプレートに渡す必要がありますが、ユーザーがログインしていないときに必要なだけです。それが Play フレームワークのメーカーからこのように意図されているかどうかは確かです。
洞察や衝動があればとてもうれしいです。ありがとう。