我想在我的另一个模板中使用模板中的可重用块。我怎样才能做到这一点?更具体地说:
我有一个包含此标记的模板views / main.scala.html
@logo_header = {
<div id="logo-container">
...
</div>
}
我有另一个模板views / errors / notFound.scala.html我想在主模板中包含logo_header标签。我尝试@ main.logo_header或@ main.logo_header(),但编译总是说:
value logo_header不是对象views.html.main
的成员
我查看了他们描述的官方documentation,但我不明白为什么它不起作用。
答案 0 :(得分:5)
您已完成与文档中提到的用法略有不同的操作。在文档中,可重用标记在其自己的文件中声明。你要做的是在一个视图模板中声明一个辅助函数,然后尝试从另一个模板调用它。如this answer中所述,函数仅对声明它的视图模板可见。
您需要做的是将徽标标记标记移到自己的文件中:
<强>视图/ _logo_header.scala.html 强>
<div id="logo-container">
...
</div>
然后参考如下:
<强>视图/ main.scala.html 强>
<html>
...
_logo_header
...
</html>
我给新文件一个带有前导下划线的名称,因为这是一个常见的命名约定,它将文件标记为包含HTML片段而不是完整的HTML文档。
最后,我假设您的徽标标题摘要不需要接受任何参数。如果是这样,您可以在文档中提到的Scala中添加一些内容:
<强>视图/ _logo_header.scala.html 强>
@(arg1: String, arg2: String)
<div id="logo-container">
...
</div>
<强>视图/ main.scala.html 强>
<html>
...
_logo_header("foo", "bar")
...
</html>