В этом ответе я предполагаю, что ваши шаблоны имеют одинаковые входные параметры и тип вывода (HTML). Play docs говорят, что шаблоны скомпилированы для обычных функций 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 world!», И если мы пройдем template2, мы получим «Hello Stackoverflow!».
Теперь вы можете определить метод 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)
Вы имеете в виду одинаковые параметры ввода или совершенно разные шаблоны? –