如何在 main.scala.html 模板页面中检索当前 url
How to retrieve current url in the main.scala.html template page
抱歉这个愚蠢的问题,但我是 Scala 的新手,我正在学习 Scala 和 Play Framework:
我必须在我的 main.scala.html 模板页面中实现导航栏,并且我必须正确设置活动 class。
我正在使用 scala 2.12 和 Play 框架 2.7.2。
检索请求对象以获取当前 uri 的方法是什么?
尝试像这样将 request
作为隐式参数传递给 main
模板
@(name: String)(implicit request: RequestHeader)
Hello @name. You are at url:
@{request.host}@{request.uri}
确保请求在控制器中被标记为 implicit
,以便它像这样自动传递到 main
模板
class HomeController @Inject()(cc: ControllerComponents) extends AbstractController(cc) {
def index = Action { implicit request =>
Ok(views.html.main("Picard"))
}
}
正在上路
GET / controllers.HomeController.index
应该输出
Hello Picard. You are at url:
localhost:9000/
谢谢,我已检索到请求。
只是为了更好地解释:我的项目设置如下:我有两个控制器 HomeController、WidgetController,然后我有四个页面 main.scala.html(模板)、home.scala.html、index.scala.html和 listWidget.scala.html。然后我的路线看起来像:
GET / controllers.HomeController.home
GET /index controllers.WidgetController.index
GET /widgets controllers.WidgetController.listWidgets
POST /widgets controllers.WidgetController.createWidget
我的主模板是这样的:
@(title: String)(content: Html)(implicit request: RequestHeader)
<!DOCTYPE html>
<html lang="en">
<head>
@* Here's where we render the page title `String`. *@
<title>@title</title>
</head>
<body>
<div class="container">
@(request)
@content
</div>
</body>
</html>
主页看起来像:
@(implicit request: RequestHeader)
@main("Welcome to Play") {
<h1>Home</h1>
}(request)
HomeController 看起来像:
@Singleton
class HomeController @Inject()(cc: ControllerComponents) extends AbstractController(cc) {
def home() = Action { implicit request: Request[AnyContent] =>
Ok(views.html.home(request))
}
}
所以我必须在我创建的每个页面中传递请求...这是在不修改每个页面的情况下获取请求的更聪明的方法?
抱歉这个愚蠢的问题,但我是 Scala 的新手,我正在学习 Scala 和 Play Framework:
我必须在我的 main.scala.html 模板页面中实现导航栏,并且我必须正确设置活动 class。
我正在使用 scala 2.12 和 Play 框架 2.7.2。
检索请求对象以获取当前 uri 的方法是什么?
尝试像这样将 request
作为隐式参数传递给 main
模板
@(name: String)(implicit request: RequestHeader)
Hello @name. You are at url:
@{request.host}@{request.uri}
确保请求在控制器中被标记为 implicit
,以便它像这样自动传递到 main
模板
class HomeController @Inject()(cc: ControllerComponents) extends AbstractController(cc) {
def index = Action { implicit request =>
Ok(views.html.main("Picard"))
}
}
正在上路
GET / controllers.HomeController.index
应该输出
Hello Picard. You are at url:
localhost:9000/
谢谢,我已检索到请求。
只是为了更好地解释:我的项目设置如下:我有两个控制器 HomeController、WidgetController,然后我有四个页面 main.scala.html(模板)、home.scala.html、index.scala.html和 listWidget.scala.html。然后我的路线看起来像:
GET / controllers.HomeController.home
GET /index controllers.WidgetController.index
GET /widgets controllers.WidgetController.listWidgets
POST /widgets controllers.WidgetController.createWidget
我的主模板是这样的:
@(title: String)(content: Html)(implicit request: RequestHeader)
<!DOCTYPE html>
<html lang="en">
<head>
@* Here's where we render the page title `String`. *@
<title>@title</title>
</head>
<body>
<div class="container">
@(request)
@content
</div>
</body>
</html>
主页看起来像:
@(implicit request: RequestHeader)
@main("Welcome to Play") {
<h1>Home</h1>
}(request)
HomeController 看起来像:
@Singleton
class HomeController @Inject()(cc: ControllerComponents) extends AbstractController(cc) {
def home() = Action { implicit request: Request[AnyContent] =>
Ok(views.html.home(request))
}
}
所以我必须在我创建的每个页面中传递请求...这是在不修改每个页面的情况下获取请求的更聪明的方法?