2014-12-23 11 views
2

나는 Play! 문서를 읽었습니다. 어떤 매개 변수 그룹이 무엇이며 어떤 매개 변수 그룹이 사용되는지 설명 할 수는 없습니다.재생! 프레임 워크 템플릿 매개 변수 그룹

@(title: String)(user: User) 

: 그리고 누군가가 여기 좀 도와 수 있다면

@(title: String, user: User) 

이 크게 감사 것 사이의 차이를 무엇

.

+1

이것 좀 봐 http://stackoverflow.com/questions/4684185/why-does-scala-provide-both-multiple-parameters-lists-and-multiple-parameters-pe – mgosk

답변

0

@mgosk이 주석에서 제시 한 것처럼, 여러 매개 변수 목록은 스칼라 함수의 표준 기능이며 Google은 내가 할 수있는 것보다 훨씬 나은 답변을 할 수 있습니다.

과 관련하여 구체적으로 템플릿을 재생하면 매우 유용합니다. 플레이 템플릿

TLDR 매개 변수 그룹은 유용에 대한 :

  • 스칼라 블록 호출 구문을 통해 내용을 래핑하는 좋은 방법을 제공
  • (작업 및 부모 템플릿에서) 템플릿에 암시 적 매개 변수를 전달 당신이 그들을 사용할 수

이유 중 하나는 뷰에 암시 적 매개 변수를 전달하는 형태이다. 암시 적 매개 변수는 컴파일러에 의해 호출 사이트에 추가되고, spec points out으로 그들은 마지막 (또는 유일한) 인수 목록에 표시되어야 예 :

@(title: String)(implicit request: RequestHeader) 

<h1>@title</h1> 

The path is for this request is <b>@request.path</b>. 

액션 당신이 돈에서 해당 템플릿을 호출 범위 (see here for more details on that)에있는 한 요청 헤더를 명시 적으로 제공해야합니다.

템플릿의 다중 매개 변수 목록에 대한 또 다른 유용한 사용법은 내용을 "포장"하는 것입니다. 특히 Scala 함수를 braces instead of parenthesis과 함께 호출 할 수 있다면 더욱 그렇습니다. 예를 들어 여러 개의 다른 위젯을 나타내는 부분 템플릿이 있지만 그 템플릿은 항상 동일한 상용구 HTML로 둘러싸여 있다고 가정 해보십시오.

@(name: String)(details: Html) 

<div class="item"> 
    <div class="item-name">@name</div> 
    <div class="item-body"> 
    @details 
    </div> 
</div> 

이 지금처럼 호출 할 수 있습니다 : 하나는 표준화 된 "페이지 크롬"를 정의하는 방법을

이 마지막 기술은
@(item: WidgetA) 

@widgetWrapper(item.name) { 
    <ul class="item-details"> 
    <li>@item.detail1</li> 
    <li>@item.detail2</li> 
    </ul> 
} 

또는 사이트는 다음과 같습니다 (widgetWrapper.scala.html라고 함) 템플릿 래퍼를 만들 수 있습니다 예 (standardLayout.scala.html 파일) :

@(title: String)(content: Html)(sidebar: Html) 

<html> 
    <head> 
    <title>@title</title> 
    </head> 
    <body> 
    <header> 
     <h1>@title</h1> 
    </header> 
    <article>@content</article> 
    <aside>@sidebar</aside> 
    </body> 
</html> 

과 같이 사용 :

@() 

@standardLayout("My Page on Goats") { 
    <p> 
    Lots of text about goats... 
    </p> 
} { 
    <ul class="sidebar-links"> 
    <li><a href="https://en.wikipedia.org/wiki/Goat">More about goats!</li> 
    </ul> 
} 

두 개의 중괄호로 구분 된 섹션의 내용은 Twirl Html으로 주 내용과 사이드 바 (첫 번째 인수에서 문자열로 전달 된 제목이 있음)로 레이아웃 템플릿에 전달됩니다.)

이러한 편리 성은 여러 매개 변수 그룹에 의해 가능합니다.