如何访问控制器变量而不传递给Play html

时间:2015-09-29 15:02:00

标签: scala playframework

是否可以在不传递给scala.html模板的情况下访问Play Framework scala控制器变量?

例如我的控制器代码如下,

    def index = Action { request =>
    val orgId = '12132132'

    Ok(views.html.index(request))
    }

我的index.scala.html如下,

    @(implicit request: RequestHeader)
      @main("Test") {

    I want to access controller "orgId" variable here wihtout passing here.

         }

这是我的main.scala.html,

    @(title: String)(content: Html)
<html lang="en">
    <head>
        <title>@title</title>
    </head>
    <body>
        @content <!-- index.html placed here --> 
    </body> 
    <div>
        Here I have bootstrap side menu and I want to display controller variable here without passing to main.scala.html templete.
    </div>
</html> 

感谢。

1 个答案:

答案 0 :(得分:0)

你不能这样做,因为它是私有的功能。没有其他功能可以访问它(即使不在同一个类中) 如果您使用对象作为控制器的实例(而不是类)并且您使用对象本身的值,那么您可以这样做,但是强烈建议不要这样做。 e.g。

object MyController extends controller {
  val orgId = '12132132'
  def index = Action { request =>
    Ok(views.html.index(request))
  }
  ...
}
@(implicit request: RequestHeader)
  @main("Test") {

I want to access controller "@{MyController.orgId}" variable here without passing here.

}

如果您需要传递一些不依赖于请求的数据,这意味着它可以是对象的值,那么它也可能在控制器之外。因此,您可以创建一个包含这些值的对象,并访问它们 从技术上讲,它与使用控制器相同,但逻辑上它更好地分离。