2

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

默认情况下,Play 会在app/views/. 我也想让 Play 在另一个文件夹中查找视图app/views-site-specific/。这可能吗?我该怎么做?


背景:

views-site-specific文件夹实际上是指向 Play 应用程序父目录的符号链接。Play 应用程序保存在 Git 存储库中,此父目录是另一个Git 存储库,它存储特定于站点的主题和自定义项,符号链接到 Play 应用程序存储库内部。通过这种方式,我可以避免在 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)
4

2 回答 2

1

In Java (Play 2.3) it's possible to add views in any directory and access them by import, for example adding a view file called test.scala.html in the controllers directory, then

import controllers.html.test;
// ...
return ok(test.render());

Importing several view-files from a sub-directory also works (here using controllers/views/)

import controllers.views.html.*;
于 2014-11-23T11:21:19.757 回答
0

如果它实际上是不可能的(我不知道),我正在使用一个有点复杂的解决方法:(
你需要阅读 OP 中的背景部分,这很有趣。)

我在 app/views/ 文件夹中创建了两个主题文件夹,并将其中一个软链接到 [假定的父 Git 存储库中的主题/文件夹]。而不是尝试创建另一个app/views/ 文件夹。

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

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)

我的 Scala 代码现在变得有点复杂:它在 app/views/themesbuiltin/ 和 app/views/themes/ 中搜索 Scala 模板文件。(使用哪个 Scala 模板在配置文件中指定,并在运行时通过反射找到。)

然而,CSS 和 JS 可能有时位于有时位于 .../themesbuiltin/[theme-name]/styles.css.../themes/[theme-name]/styles.css,我觉得这种解决方法会使 Scala 代码变得不必要地复杂。

于 2013-05-30T16:07:26.507 回答