Playframework 如何将另一个“视图”文件夹添加到Play Framework 2.1应用程序?

Playframework 如何将另一个“视图”文件夹添加到Play Framework 2.1应用程序?,playframework,themes,sbt,directory-structure,playframework-2.1,Playframework,Themes,Sbt,Directory Structure,Playframework 2.1,我想添加另一个文件夹,Play在其中查找Scala模板文件 默认情况下,“播放”在app/views/中查找模板。我想让Play查找另一个文件夹中的视图,app/views-site-specific/。这可能吗?我该怎么做 背景: 此视图站点特定的文件夹实际上是指向Play应用程序父目录的符号链接。Play应用程序保存在Git存储库中,此父目录是另一个Git repo,它存储特定于站点的主题和自定义项,并从Play应用程序repo内部进行符号链接。通过这种方式,我可以避免在Play应用程序本

我想添加另一个文件夹,Play在其中查找Scala模板文件

默认情况下,“播放”在
app/views/
中查找模板。我想让Play查找另一个文件夹中的视图,
app/views-site-specific/
。这可能吗?我该怎么做


背景:

视图站点特定的
文件夹实际上是指向Play应用程序父目录的符号链接。Play应用程序保存在Git存储库中,此父目录是另一个Git repo,它存储特定于站点的主题和自定义项,并从Play应用程序repo内部进行符号链接。通过这种方式,我可以避免在Play应用程序本身中存储特定于站点的内容。(它应该在许多不同的站点上重复使用,所以我不想在那里使用任何特定于站点的东西。)

这是所有内容的布局:

site-specific-git-repo/
  |
  +--play-2.1-application-git-repo/
  |    +--conf/
  |    +--public/
  |    +--app/
  |        +--controllers/
  |        +-- ...
  |        +--views/
  |        |   +--"built-in" Scala templates for e.g. admin pages
  |        |   +--themes/  -- bundled with app server, for E2E tests
  |        +--views-site-specific
  |              |
  |              |
  |              |
  +--themes/  <--` (symbolic link)
特定于站点的git回购/
|
+--play-2.1-application-git-repo/
|+--conf/
|+--公共/
|+--应用程序/
|+--控制器/
|        +-- ...
|+--视图/
||+--“内置”Scala模板,例如管理页面
||+--主题/--与app server捆绑,用于E2E测试
|+--特定于站点的视图
|              |
|              |
|              |

+--主题/如果实际上不可能(我不知道),我将使用一种有点复杂的解决方法:
(你需要阅读OP中的背景部分才能对此感兴趣。)

我在app/views/folder中创建了两个主题文件夹,并将其中一个软链接到[Git repo中的一个主题/文件夹]。而不是尝试创建另一个应用程序/视图/文件夹

这两个主题文件夹中的一个用于内置主题,另一个用于站点特定主题,如下所示:

site-specific-git-repo/
  |
  +--play-2.1-application-git-repo/
  |    +--conf/
  |    +--public/
  |    +--app/
  |        +--controllers/
  |        +-- ...
  |        +--views/
  |            +--..."built-in" Scala templates for e.g. admin pages
  |            +--themesbuiltin/
  |            |   +--default20121009  <— bundled with Play app, for E2E tests
  |            +--themes/     <— site specific, don't want in Play app Git repo
  |                |
  |                |
  +--themes/  <----` (symbolic link)
特定于站点的git回购/
|
+--play-2.1-application-git-repo/
|+--conf/
|+--公共/
|+--应用程序/
|+--控制器/
|        +-- ...
|+--视图/
|+-…“内置”Scala模板,用于管理页面等
|+--主题内置/
||+--default20121009在Java(Play 2.3)中,可以在任何目录中添加视图并通过导入进行访问,例如在控制器目录中添加名为
test.scala.html
的视图文件,然后

import controllers.html.test;
// ...
返回ok(test.render());
从子目录导入多个视图文件也有效(此处使用
controllers/views/

import controllers.views.html.*;

由于视图实际上被编译为
.class
文件,您不能只依赖它们(使用sbt)吗?或者你可以利用?@maba我不知道子模块会有什么帮助?如果我把它放在Play-2.1-app repo目录下,它的版本(SHA1)必须签入Play-2.1-app repo,然后,就不可能再进行特定于站点的自定义。@maba我不确定,但不会通过某些SBT插件来播放自己,只编译app/views/to
文件中的
.scala.html
文件?然后,我首先需要告诉Play在app/views/folder之外查找
scala.html
文件,并对其进行编译,否则就不会有任何
.class
文件可依赖了?我可以软链接到位于父Git repo中的[Play项目,该项目包含特定于站点的
.scala.template
s]。那可能行吗?但添加一个完整的Play项目,包括
app
conf
public
project
目录,仅仅添加一些
视图/
文件,感觉有些过火了。