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