我没有在Play Framework中发现任何部分视图的概念,类似于Ruby on Rails的部分视图。例如,如果有layouts/main.scala.html
布局:
@(title: String)(content: => Html)(implicit flash: Flash)
<!DOCTYPE html>
<html>
<head>
<title>@title</title>
</head>
<body>
<section class="content">@content</section>
</body>
</html>
还有layouts/_footer.scala.html
“部分”,如何将_footer
加入main
?
Play中有类似内容吗?
答案 0 :(得分:17)
我认为RoR的部分观点过于复杂。关于Play模板要记住的事情,因为它们本质上只是可以直接从Scala代码调用的函数。而且,Play模板本质上是Scala代码。这意味着,可以从其他Play模板调用Play模板。因此,只需创建另一个名为footer.scala.html
的模板,例如:
<footer>
Powered by Play Framework
</footer>
然后从主模板中调用它,就像调用任何其他Scala函数一样:
@(title: String)(content: => Html)(implicit flash: Flash)
<!DOCTYPE html>
<html>
<head>
<title>@title</title>
</head>
<body>
<section class="content">@content</section>
@footer()
</body>
</html>
再好不过了。
答案 1 :(得分:0)
不确定您是使用Play 1.x还是2,但在Play 1中,有模板标签 - 请参阅http://www.playframework.com/documentation/1.2.7/templates#inheritance
答案 2 :(得分:0)
我认为@Vidya想要说的是你可以这样做:
在main.scala.html中,我们添加一个名为footer的变量,其类型为Html,默认值为empty:
@(title: String, footer: Html = Html(""))(content: Html)
<!DOCTYPE html>
<html>
<head>
<title>@title</title>
</head>
<body>
@content
@footer
</body>
</html>
然后在像index.scala.html这样的页面中,我们可以执行以下操作:
@(message: String)
@footer = {
<footer>the footer!</footer>
}
@main("Welcome", footer) {
the content!
}