关于将通用状态传递给模板,我或多或少有一个关于理解 Play 框架的一般性问题。这是一个被广泛讨论的话题,就像这里:http: //jazzy.id.au/default/2012/10/26/passing_common_state_to_templates_in_play_framework.html 但我仍然不确定最佳实践是什么。我熟悉基于脚本语言的 MVC 框架,如 CakePHP 或 Django,所以这个问题对我来说并不重要。所以,基本上有两种可能:
- 在模板中使用隐式变量,这仅适用于 Scala,您仍然必须在每个模板中声明该变量!?
- 使用 Http.Context 类来存储数据,这对我来说更像是一种 hack,它不太适合传递大量数据。(如果我错了请纠正我)
对于这个问题,我有两个重要的用例。第一个是让登录的用户对象随处可用。这是使用 Http.Context 很容易解决的问题。第二个对我来说更难。我有一个标题,它要么显示登录表单,要么显示一些用户特定的选项。因此,我在模板中有一个 if 条件,检查用户是否登录。但是当我显示登录表单时,我需要在控制器中生成表单对象。因此,我必须在每个控制器中生成该对象并将其传递给每个模板,尽管我只在没有用户登录时才需要它。我确定 Play 框架的制造商是否是这样的意思。
我会很高兴有任何见解或冲动。谢谢。