从另一个模板中调用框架调用辅助函数

时间:2013-04-18 21:30:34

标签: scala playframework

我有一个帮助文件utils.scala.html,如下所示:

@renderTableRow(columnTag: String, columns: Seq[String]) = {
<tr>
@for(column <- columns) {
    <@columnTag>
        @column
    </@columnTag>
}
</tr>
}

我想从其余的视图文件中调用这个帮助函数来创建表头。

@import views.html.mycommon.utils

@renderQuotesTable() = {
<table class="table table-bordered table-striped">
  <thead>
       @utils.renderTableRow("th", Seq("Name", "Date of Birth", "Age"))
  </thead>
  <tbody>
  </tbody>

}

但是,我得到以下错误

值renderTableRow不是对象views.html.mycommon.utils的成员。

我在这里错过了什么?

1 个答案:

答案 0 :(得分:1)

您无法导入其他模板的声明函数。执行sbt doc并且在生成的Scala Doc中,它不是util对象中renderTableRow的线索。正如您在生成的模板源中看到的那样,“renderTableRow”被包装到apply方法中:“target / scala-2.10 / src_managed / main / views / html / mycommon / utils.template.scala”。

对于您想在另一个模板中使用的每个函数,您需要在真实的Scala单例对象中创建模板或函数。