如何在 Play Framework 中包含任何目录中的父模板

How do I include parent template from any directory in Play Framework

当我有子模板例如 index.scala.html 和父模板 main.scala.html 时,我包括父模板使用代码:

@main("MyApp") {}

此模板包含正确。但是当我将 index.scala.html 移动到目录中时,例如 Location 并尝试使用代码包含父模板:

@views.main("MyApp") {}

它不起作用。

我的 views 目录的结构:

我遇到错误:

[error] /Users/dev/project/app/scala/pl/moody/views/Location/index.scala.html:1: object main is not a member of package views
[error] @views.main("Moody") {
[error]        ^

您不需要使用 views 前缀,它是 auto-imported,所以您应该只使用 @main("MyApp") 即使子目录放在子目录中。

我遇到了几乎相同的问题,我通过使用完整路径调用它解决了这个问题:

@views.html.admin("Admin Interface") {

}

试着这样称呼它:

@views.html.main("MyApp") {}

好的,我找到了可行的解决方案。正确编译的 html 文件放在 target 目录下。 就我而言 target/scala-2.11/twirl/main/scala/com/myProject/views/html/main.template.scala

鉴于我现在有这个目录,我可以将它添加到我的 index.scala.html 中,它看起来

@scala.com.myProject.views.html.main("MyApp") {

}

并且相同的 url 将从控制器呈现 html:

  def index = Action {
    Ok(scala.com.myProject.views.html.main("MyApp"))
  }