Playframework 如何将另一个“视图”文件夹添加到Play Framework 2.1应用程序?
我想添加另一个文件夹,Play在其中查找Scala模板文件 默认情况下,“播放”在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应用程序本
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
目录,仅仅添加一些视图/
文件,感觉有些过火了。