Как получить текущий URL на странице шаблона main.scala.html - PullRequest
2 голосов
/ 17 июня 2019

Извините за глупый вопрос, но я новичок в Scala и изучаю Scala и Play Framework:

Мне нужно реализовать панель навигации на моей странице шаблона main.scala.html, и ядолжны правильно установить активный класс.

Я использую scala 2.12 и Play framework 2.7.2.

Каким способом можно получить объект запроса для получения текущего URI?

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Спасибо, я получил запрос.

Просто чтобы объяснить лучше: мои настройки проекта следующие: у меня есть два контроллера HomeController, WidgetController, затем у меня есть четыре страницы main.scala.html (template), 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))
  }
}

поэтому мне нужно передавать запрос на каждой странице, которую я делаю ... это более разумный способ получить запрос без изменения каждой страницы?

0 голосов
/ 18 июня 2019

Попробуйте передать 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/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...