2016-01-26 191 views
0

播放負荷局部模板我有一個這樣的斯卡拉模板...斯卡拉通過字符串名稱

@() 
import view.html.partials._header 
import view.html.partials._footer 

<!DOCTYPE html> 
<html lang="en"> 

    @_header() 

    /* Body of web page */ 

    @_footer 

</html> 

每一個頁面都有相同的頁眉和頁腳和不同的身體。我不想這樣做......

頁#1 ...

@() 
import view.html.partials._header 
import view.html.partials._footer 
import view.html.partials._body1 

<!DOCTYPE html> 
<html lang="en"> 
    @_header() 
    @_body1() 
    @_footer 
</html> 

頁#2 ...

@() 
import view.html.partials._header 
import view.html.partials._footer 
import view.html.partials._body2 

<!DOCTYPE html> 
<html lang="en"> 
    @_header() 
    @_body2() 
    @_footer 
</html> 

頁#3 ...

@() 
import view.html.partials._header 
import view.html.partials._footer 
import view.html.partials._body3 

<!DOCTYPE html> 
<html lang="en"> 
    @_header() 
    @_body3() 
    @_footer 
</html> 

等等

有沒有辦法傳入partia的名字你想作爲參數渲染的模板?這個問題的解決方案是什麼?

p.s.我沒有看到在解決方案...... the play template documentation

回答

-1

作出這樣一個交換機或case語句......

@(bodyCase: ClosedEnumType) 

import view.html.partials._header 
import view.html.partials._footer 
import view.html.partials._body1 
import view.html.partials._body2 

<!DOCTYPE html> 
<html lang="en"> 

    @_header() 

    @bodyCase match { 
     case Body1() => { 
      @_body1() 
     } 
     case Body2() => { 
      @_body2() 
     } 
    } 

    @_footer 

</html> 
+0

你會對另一個答案感到高興。你的方法非常違背框架。 – Ryan

2

而不必所有這些重複的,你可以創建一個main.scala.html文件中使用作爲默認佈局:

@(title: String)(content: Html) 

@import view.html.partials._header 
@import view.html.partials._footer 

<!DOCTYPE html> 

<html lang="en"> 

    @_header() 

    <body> 

     @content 

     @_footer() 

    </body> 
</html> 

第一行說,正是「這種觀點將獲得冠軍的說法,也HTML塊」。從這一點,你可以做到以下幾點:

頁#1:

@(someParameter: String) 

@main("The title of Page #1") { 

    <h1>Hello, I'm the body of Page #1</h1> 

    <p>As you can see, I'm calling the main view passing 
     a title and a block of HTML</p> 

} 

頁#2:

@(someParameter: String, anotherParameter: Long) 

@main("This time Page #2") { 

    <h1>Hello, I'm the body of Page #2</h1> 

    <p>Just like Page #1, I'm passing a title 
     and a block of HTML to the main view.</p> 

} 

這是所有在文檔解釋,但在另一頁:

https://www.playframework.com/documentation/2.0/ScalaTemplateUseCases