我正在学习 Play 框架,想知道如何创建一个将出现在根模板中的动态侧边栏/页脚,并且在渲染每个视图时我不需要显式地为其传递数据。我通读了文档,对此一无所知。
在 Django 中,我会为此创建一个自定义模板标签。Play中是否也有类似的东西?解决此问题的最佳/典型方法是什么?
我正在学习 Play 框架,想知道如何创建一个将出现在根模板中的动态侧边栏/页脚,并且在渲染每个视图时我不需要显式地为其传递数据。我通读了文档,对此一无所知。
在 Django 中,我会为此创建一个自定义模板标签。Play中是否也有类似的东西?解决此问题的最佳/典型方法是什么?
如何避免在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 作为隐式方法参数来传递动态内容。