Как передать переменную сеанса в форму в игровом фреймворке / Scala для хранения в базе данных - PullRequest
0 голосов
/ 26 февраля 2019

Ниже моя страница отправки формы.Переменная author - это то, что я хочу получить от вошедшего в систему пользователя, поскольку она является частью данных, которые мне нужно поместить в базу данных вместе с остальными этими входными данными.Я хочу знать, как я могу получить имя пользователя в этом экземпляре вошедшего в систему пользователя и передать его в поле автора без необходимости вводить его пользователем самостоятельно.

@(itemForm: Form[models.SubmittedWork],user: models.users.User)

@import helper._

@main("Add submission",user){
    <p class="lead">Add a new submission</p>

    @form(action=routes.HomeController.addSubmissionSubmit(), 'class -> "form-horizontal", 'role -> "form") {
        @* CSRF attack prevention *@
        @* This token, sent by the controller, will be used to authenticate the form submission *@
        @CSRF.formField

            @inputText(itemForm("name"), '_label -> "Name", 'class -> "form-control")
            @select(
                itemForm("Genre.id"),
                options(Genre.options),
                '_label -> "Genre", '_default -> "-- Choose a Genre --", 
                '_showConstraints -> false, 'class -> "form-control"
            )
            @inputText(itemForm("text"), '_label -> "Text", 'class -> "form-control")

            @inputText(itemForm("id"), '_label -> "", 'hidden -> "hidden")
            @inputText(itemForm("author"),'_label -> "", 'hidden -> "hidden")

            <div class="actions">
                <input type="submit" value="Add/Update item" class="btn btn-primary">
                <a href="@routes.HomeController.works(0)">
                    <button type="button" class="btn btn-warning">Cancel</button>
                </a>
            </div>
    } @* end of form *@
} @* end of main *@

1 Ответ

0 голосов
/ 26 февраля 2019

Вы можете просто подключить это через свой контроллер.

  def myView(): Action[AnyContent] = Action { implicit req =>
    val userId = req.session("user_id")
    val user = findUser(userId)
    Results.Ok(views.yourForm(itemForm, user))
  }

Затем, по вашему мнению:

<p class="username">${user.name}</p>

Метод findUser или любой другой, который позволит вам искатьuser на основании каких-либо данных в запросе.req.session(key) вернет null, если пользователь потенциально не вошел в систему, поэтому вы можете вместо этого Option[User].

Суть в том, что вы можете передавать любые переменные в форму и использовать @{variable.field} Синтаксис для отображения того, что вам нравится.Синтаксис Twirl позволяет вам делать это, а также использовать циклы в коллекциях для создания div для каждого элемента и т. Д.

Быстро прочитайте Синтаксис Twirl , это должно помочь вам увидеть все примеры того, что он может сделать.Чтобы «получить данные», обычно предпочтительнее поместить вашу логику в контроллер и передать ее на ваше усмотрение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...