Play框架(Scala)中根模板中的动态内容

时间:2013-09-03 18:50:57

标签: scala playframework

我正在学习Play框架&想知道如何创建一个动态的侧边栏/页脚,它将出现在根模板和&渲染每个视图时,我不需要显式传递数据。我通读了the docs,但没有任何相关内容。

在Django中,我会为此创建一个自定义模板标记。 Play中有类似的东西吗?解决这个问题的最佳/典型方法是什么?

1 个答案:

答案 0 :(得分:3)

How to avoid passing parameters everywhere in play2?http://jazzy.id.au/default/2012/10/26/passing_common_state_to_templates_in_play_framework.html 非常有帮助。

例如,您可以使用模板footer.scala.html,main.scala.html和header.scala.html。

main.scala.html可以看起来像:

@(title: String)(content: Html)(implicit x: SomeType)

<!DOCTYPE html>

<html>
    <head>
        <title>@title</title>
        <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
        <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")">
        <script src="@routes.Assets.at("javascripts/jquery-1.9.0.min.js")" type="text/javascript"></script>
    </head>
    <body>
        @header() @* include the header *@
        @content  @* will resolve to "the content" for index.scala.html *@
        @footer() @* include the footer *@
    </body>
</html>

还有一个页面模板,例如index.scala.html:

@(message: String)(implicit x: SomeType)

@main("Welcome to Play 2.1") {
    the content
}

页脚或标题可以使用x:SomeType作为隐式方法参数来传递动态内容。