Play框架2.x Scala模板中的内联变量

时间:2012-05-06 18:54:33

标签: scala playframework playframework-2.0

如何在Play framework 2.x Scala模板中创建内联变量? 来自Play's guide的路径对我来说并不清楚:

@defining(user.firstName + " " + user.lastName) { fullName =>
  <div>Hello @fullName</div>
}

3 个答案:

答案 0 :(得分:10)

首先,您不创建变量,而是,这意味着它只读。

在您的示例中,您创建了一个值fullName,可以在大括号内找到。

@defining("Farmor") { fullName =>
  <div>Hello @fullName</div>
}

将打印 Hello Farmor

要定义一个可在模板中全局访问的值,只需使用大括号包含所有内容。

E.g。

@defining("Value") { formId =>
  @main("Title") {
    @form(routes.Application.addPost, 'id -> formId) {
      @inputText(name = "content", required = true)
      <input type="submit" value="Create">
    }
  }
}

在示例中,您可以使用值formId anywere。

答案 1 :(得分:9)

如果您不想使用@defining语法,可以定义reusable block,每次使用时都会对其进行评估:

@fullName = @{
  user.firstName + " " + user.lastName
}

<div>Hello @fullName</div>

使用相同的语法,您还可以将参数传递给块: https://github.com/playframework/Play20/blob/master/samples/scala/computer-database/app/views/list.scala.html

答案 2 :(得分:2)

这很简单,使用示例中的代码跨越您的块,然后您可以使用具有值的@fullName变量:

user.firstName + " " + user.lastName