在 Kohana(PHP 框架)中,布局是通过 Template_Controller 实现的,它包含一个名为 $template 的成员变量,用作布局视图。然后在 action 方法中,您可以使用更多的子视图填充 $template,通常是内容视图。(http://forum.kohanaframework.org/discussion/3612/kohana-layout-system/p1)
这允许我在运行时更改布局“主题”。这对于多租户系统很有用,租户可以选择自己的主题(两列、三列等)
如何使用 Scala 模板引擎在 playframework 2 Scala 中实现这一点?换句话说,我想要多个布局模板供租户选择。然后控制器呈现布局模板和特定于操作的内容模板。
类似于(控制器的操作伪代码):
- 基于用户,检索布局主题(以字符串形式存储在数据库中的名称,并具有相应的映射视图文件)。
- 呈现特定于操作的内容视图。
- 渲染从 (1) 和 (2) 获得的布局视图。
注意:对于每个操作,布局主题可能会因用户而异,但内容视图保持不变。
在它的文档(http://www.playframework.com/documentation/2.1.1/ScalaTemplateUseCases)
中,内容模板,比如 index.scala.html,包括对 main.scala.html 中定义的 main 的调用,布局模板。换句话说,它是硬编码的,因此 index.scala.html 与 main.scala.html 紧密耦合。
我想使用反射从控制器调用 main,然后传递内容。
另一种方法是使用解释模板引擎,例如 Scalate。
有什么建议吗?