Как создать переменную внутри шаблона play twirl?

У меня есть модель, которую я передаю своему представлению, которая выглядит так:

IndexModel(productSales: Seq[ProductSale])

case class ProductSale(id: Int, name: String, soldAt: java.time.ZonedDateTime)

Теперь я хочу отобразить список продаж продуктов, но я помещаю заголовок для Дня, а затем перечисляю все продажи за этот день, например:

10 июля 2016 г.

продукт 1

продукт 2

11 июля 2016 г.

товар 24 товар 2234

Единственный способ, которым я могу это сделать, потребует от меня сохранения текущего дня в переменной, поэтому псевдокод будет таким:

@currentDay = -1
@for(ps <- model.ProductSales) {

  @if(currentDay != ps.SoldAt.getDayOfMonth) {
     <h1>@ps.soldAt</h1>
     @currentDay = ps.SoldAt.getDayOfMonth
  }

  <li>@ps.name - @ps.id </li>

}

Как мне это сделать с помощью вертушки?


person Blankman    schedule 14.07.2016    source источник


Ответы (1)


Попробуйте (не проверял):

@for(currentDate <- model.productSales.map(_.soldAt).distinct) {
  <h1>@currentDate</h1>  
  @for(ps <- model.productSales.filter(_.soldAt == currentDate) {
    <li>@ps.name - @ps.id</li>
  }
}

Если вы хотите объявить переменную, вам нужно использовать @defining(){...} — подробнее здесь: https://www.playframework.com/documentation/2.5.x/JavaTemplates#Declaring-reusable-values

person mkurz    schedule 14.07.2016