2012-10-24 3 views
19

템플릿에 Event 개체를 전달하는 중입니다. 수행해야 할 작업은 @event.getSeverity 값을 확인하는 것입니다. 값이 양수이면 특정 색상 인 <div>을 녹색으로 표시하고 싶습니다. 값이 음수이면 특정 색상의 <div>을 빨간색으로 표시하고 싶습니다.재생! 프레임 워크 : 템플릿에 변수를 정의 하시겠습니까?

변수를 정의하는 방법을 찾을 수 없습니다. 그것은 가능한가? 내가 생각해야한다.
어쨌든, 이것을 달성하는 가장 간단한 방법은 무엇입니까?

감사 Play documentation 당신이 @defining 도우미를 사용할 수 있습니다에 명시된 바와 같이

+1

가능한 중복 (http://stackoverflow.com/questions/12031146/declare-variable-in-a-play2-scala-template) – pathikrit

답변

41

.

@defining(if (event.getSeverity > 0) "green" else "red") { color => 
    <div style="background-color: @color">foo</div> 
} 

또는 스칼라 템플릿이 시도 reusable block

@severityColor(event: Event) = @{ 
    if (event.getSeverity > 0) "green" else "red" 
} 

<div style="background-color: @severityColor(event)">foo</div> 
+0

great. 참으로 대단히 감사합니다! – socksocket

+1

재사용 가능한 블록은 매번 실행됩니다. 이는 계산되어야하는 데이터를 포함 시키는데 비실용적 일 수 있습니다. 그러나 얼마나 지저분한 정의가 될 수 있는지를 고려해 볼 때, 첫 번째 실행에서 데이터를 생성하고 향후 캐시 된 복사본을 사용하는 재사용 가능한 블록을 만드는 것을 고려해 볼 수 있습니다. 그러나 이는 재사용 가능한 블록을 복잡하게합니다. 다행히도 Play의 향후 버전에서는 변수를 정의하기가 더 쉬울 것입니다. – Mike

+0

이것은 템플릿 컴파일러가 단순히 html'style' 속성 내에 스칼라 코드를 두는 것을 허용하지 않는다는 것을 의미합니까? – matanster

8

을 사용할 수 있습니다

@import java.math.BigInteger; var i=1; var k=1 

및 질문 측면에서 문자열

@import java.lang.String; val name="template" 

에 대한

+2

아주 멋지다! 템플릿 안에서'@ {i = 5} '변수를 바꿀 수 있습니다 – myborobudur

+0

이것이 실제로 어떻게 작동할까요? – matanster

+1

@matt는 이것을 확인합니다 http://stackoverflow.com/questions/12031146/declare-variable-in-a-play2-scala-template/21397683#21397683 –

8

다른 변형입니다. 가져 오기 섹션 후에 선언 된 경우 잘 작동합니다. 그렇지 않으면 유용 약간의 시간이 될 수 함축 "에 대한 "몇 가지 오류 ("값을 찾을 수 없습니다")

@import play.i18n.Messages 
@import models.Customers 

@customers = @{Customers.allAccepted()} 

... 

@if(customers.size()>0) { 
    <ul> 
     @for(customer <- customers) { 
      <li> 
       <a href="/filters/customer/@customer.id">@customer.name</a> 
      </li> 
     } 
    </ul> 
} 
1

발생할 수 있습니다 : [A와 마찬가지로 play2의 스칼라 템플릿에 변수를 선언]의
@for(id <- products.keys; product = products(id); author = product.author.getOrElse("N/A")) {... @product.name ... @author

관련 문제