Я немного работаю с шаблонами PlayFramework, но столкнулся с проблемой. Мы используем помощники игры, для которых требуется Messages
(импортировано из play.api.i18n
). Все было в порядке, пока наш дизайнер не захотел иметь форму входа в модальную форму... Поскольку она будет добавлена к каждому отдельному шаблону, нам нужно будет везде добавлять этот параметр сообщений - что некрасиво, ИМХО.
Есть ли способ обойти это? Передача его везде будет означать, что я должен Inject()
его везде, даже если его нужно передать только для закрытия проверки типов.
Пример страницы:
@(project: model.Project)(implicit request: Request[AnyContent], messages: Messages)
@main(project.name){
<h1>@project.name</h1>
<ul>
@for(member <- project.members) {
<li><a href="@routes.UsersController.view(member)">@member</a></li>
}
</ul>
}{}
Фрагмент основного шаблона:
@(title: String)(content: Html)(additionalImport: Any)(implicit req: Request[AnyContent], messages: Messages)
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
@* this call actually needs that param. *@
@header.navbar()
<div class="container">
@req.flash.get("error").map { error =>
<div class="flash-error">@error</div>
}
@content
</div>
</body>
</html>
Форма:
@import model.UserLoginData
@(loginForm: Form[UserLoginData])(implicit req: Request[AnyContent], messages: Messages)
@helper.form(action = routes.AuthenticationController.login()) {
@loginForm.globalErrors.map { error =>
<div class="error">@error.message</div>
}
@helper.inputText(loginForm("login"))
@helper.inputPassword(loginForm("password"))
<input type="submit" value="Zaloguj"/>
}
<a href="@routes.AuthenticationController.recoverForm()">Zapomniałem hasła</a>