我正在使用Play framework 2.2.4和Scala模板。我已经创建了包含许多代码块的基本Scala模板,我想在多个视图中使用它。类似的东西:
base.scala.html
@()
@display(product: Product) = {
@product.name ($@product.price)
}
products.scala.html
...
@display(product)
...
如何在视图中导入此类文件以使用@display
阻止?
答案 0 :(得分:6)
每个视图片段都应该在其自己的文件中,并在其中声明自己的参数。 Play模板应该像单一功能一样工作,而不是很多。而是创建一个名为base
的目录,并将视图片段分离为单独的文件。
<强>视图/碱/ display.scala.html 强>
@(product: Product)
@product.name ($@product.price)
<强>视图/ products.scala.html 强>
...
@base.display(product)
...
答案 1 :(得分:1)
将它放在一个单独的文件display.scala.html
中,并使其成为唯一/实际模板,文件名是片段/函数名称:
@(product: Product)
@product.name ($@product.price)
如果在同一个包中,只需要调用它
@display(product)
或者如果在另一个包中使用完整包名或首先导入
@some.package.display(product)
@import some.package.display
@display(product)
答案 2 :(得分:1)
查看templating doc部分:标签(它们只是功能正确吗?)
通常,您可以将块移动到views/tags/displayProduct.scala.html
(并将其用作公共模板),以便在任何视图中使用它:
<div class="product">
@tags.displayProduct(product)
</div>