我有一个Play Scala 2.5应用程序。我想知道如何在scala代码的另一个Twirl模板中返回Twirl模板(如果可能的话)。
示例:我有几个对应于html输入元素的Twirl模板。一个模板用于输入文本,另一个模板用于输入复选框,等等。我有一个主模板,在里面我从Scala对象或类调用一个助手方法,并根据某些条件返回希望输入元素的Twirl模板。
发布于 2016-07-21 16:29:17
在这个答案中,我假设模板具有相同的输入参数和输出类型(HTML)。播放文档说模板被编译成普通的Scala函数。
例如,假设您有两个模板,template1和template2,它们都有输入参数a: String。主模板应该使用这两种方法中的任何一种,因此它有一个template: String => HtmlFormat.Appendable参数。
template1
@(a: String)
@{ a + " world!" }template2
@(a: String)
@{ a + " Stackoverflow!" }主
@(template: String => HtmlFormat.Appendable)
@template("Hello")如果我们通过template1,就会得到"Hello!“,如果我们通过template2,就会得到"Hello!”。
现在,您可以定义一个方法 getTemplate来获取想要的模板:
val t1 = views.html.template1.apply _
val t2 = views.html.template2.apply _
def getTemplate(param: Int) = if(param == 1) t1 else t2最后,使用Application 控制器方法:
def showTemplate(param: Int) = Action {
val template = getTemplate(param)
Ok(views.html.mainTemplate(template))
}当然还有路由:
GET /template/:id controllers.Application.showTemplate(id: Int)https://stackoverflow.com/questions/38507318
复制相似问题