Извините за глупый вопрос, но я новичок в Scala и изучаю Scala и Play Framework:
Мне нужно реализовать панель навигации на моей странице шаблона main.scala.html, и я должен правильно установить активный класс.
Я использую scala 2.12 и Play framework 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))
}
}
поэтому я должен передать запрос на каждой странице, которую я делаю... это более разумный способ получить запрос без изменения каждой страницы?